sql - 基于列值获取数据的 SQL 查询
问题描述
对于这种情况,是否可以一次尝试获取全部数据?我有这个查询,我需要从另一个表中检索产品名称。
SELECT T1.CASE_ID,
T2.PRODUCT_ID,
T2.LEVEL,
(CASE WHEN T2.LEVEL = 3 THEN T3.PARENT_PRODUCT_ID
WHEN T2.LEVEL = 2 THEN T2.PRODUCT_ID
WHEN T2.LEVEL = 1 THEN NULL END) AS NEW_PRODUCT_ID,
T3.PRODUCT_NAME
FROM TABLE1 T1
LEFT OUTER JOIN TABLE2 T2
ON T1.CASE_ID = T2.CASE_ID
LEFT OUTER JOIN TABLE3 T3
ON T2.PRODUCT_ID=T3.PRODUCT_ID
现在基于 T2.PRODUCT_ID 的 T3.PRODUCT_NAME 返回值,但我真正需要的是能够根据 NEW_PRODUCT_ID 的值检索数据?
这是我的预期输出:
希望这是有道理的。
解决方案
您可以使用子查询
SELECT T4.CASE_ID, T4.PRODUCT_ID, T4.LEVEL, T4.NEW_PRODUCT_ID, T5.PRODUCT_NAME
FROM (
SELECT T1.CASE_ID,
T2.PRODUCT_ID,
T2.LEVEL,
(CASE WHEN T2.LEVEL = 3 THEN T3.PARENT_PRODUCT_ID
WHEN T2.LEVEL = 2 THEN T2.PRODUCT_ID
WHEN T2.LEVEL = 1 THEN NULL END) AS NEW_PRODUCT_ID,
T3.PRODUCT_NAME
FROM TABLE1 T1
LEFT OUTER JOIN TABLE2 T2
ON T1.CASE_ID = T2.CASE_ID
LEFT OUTER JOIN TABLE3 T3
ON T2.PRODUCT_ID=T3.PRODUCT_ID
) AS T4
LEFT OUTER JOIN TABLE3 T5
ON T4.NEW_PRODUCT_ID=T5.PRODUCT_ID
推荐阅读
- java - 如何更改键盘语言 - Java
- f# - 使用静态解析的类型参数链接中缀运算符
- bash - 自动化“git merge”提交消息
- angular - Angular 在隔离中使用 ngModel 设置错误
- kubernetes - 从 pod 内部访问 kubernetes 命名空间(值)
- php - 如何使 Symfony 序列化组在 php 中工作?
- javascript - React DOM 不会根据 setState 重新渲染
- java - 我无法在 Program Files 中找到 JRE 文件?
- powerbi - Power BI 切片器 OR 条件
- node.js - 自定义语言的包管理器