sql - 结合三张表的case语句
问题描述
SELECT
RS00200M.ACTION_NO,RS00200M.ACTION_CD,
CAST(RS00200M.RESOLUTION_DT AS DATE) AS RESOLVED_DATE,
CASE
WHEN (RS00200M.RESOLUTION_CD = 'CMPLT')
THEN (1) ELSE (0)
END AS COUNT_COMPLETE_SO,
CASE
WHEN (RS00200M.ACTION_CD IN ('MTFRD', 'MTSRD'))
THEN (1) ELSE (0)
END AS COUNT_FINAL_INITIAL_SO,
CASE
WHEN (RS00200M.ACTION_CD = 'RERTW')
THEN (1) ELSE (0)
END AS COUNT_ERT_CHANGE_SO,
CASE
WHEN (RS00200M.ACTION_CD = 'MTEXE' AND UM00300M.SHORT IN ('058', '034', '100'))
THEN (1) ELSE (0)
END AS COUNT_SHORT,
CASE
WHEN (RS00200M.ACTION_CD = 'MTRRD')
THEN (1) ELSE (0)
END AS COUNT_REREAD_SO,
CASE
WHEN (RS00200M.ACTION_CD = 'HIUSE')
THEN (1) ELSE (0)
END AS COUNT_HIUSE,
CASE
WHEN (RS00200M.ACTION_CD = 'LKADJ')
THEN (1) ELSE (0)
END AS COUNT_LKADJ_SO
FROM
RS00200M, UM00300M, RS00210M
LEFT JOIN
RS00210M ON RS00200M.ACTION_CD = RS00210M.ACTION_CD
LEFT JOIN
UM00300M ON UM00300M.SERIAL_NO = UM00210M.SERIAL_NO
我收到一个错误
消息 208,级别 16,状态 1,第 1 行
无效的对象名称“RS00210M”
有什么建议么?提前致谢——所有三个表都存在于数据库中
解决方案
首先,您需要修复您的from
条款。每个表应该只出现一次
FROM RS00200M
LEFT JOIN RS00210M on RS00200M.ACTION_CD=RS00210M.ACTION_CD
LEFT JOIN UM00300M on UM00300M.SERIAL_NO=UM00210M.SERIAL_NO
此外,您应该删除CASE
表达式中这些多余的括号。通常,这是:
CASE WHEN (RS00200M.RESOLUTION_CD = 'CMPLT') THEN (1) ELSE (0) END AS COUNT_COMPLETE_SO
应该写成:
CASE WHEN RS00200M.RESOLUTION_CD = 'CMPLT' THEN 1 ELSE 0 END AS COUNT_COMPLETE_SO
这应该足以使您的查询运行没有错误。
旁注:您的查询结构往往表明您可能需要条件聚合。如果是这样,这是它的结构:
SELECT
RS00200M.ACTION_NO,
RS00200M.ACTION_CD,
CAST(RS00200M.RESOLUTION_DT AS DATE) AS RESOLVED_DATE,
SUM(CASE WHEN RS00200M.RESOLUTION_CD = 'CMPLT' THEN 1 ELSE 0 END) AS COUNT_COMPLETE_SO,
--- ... more SUM(CASE ...) expressions here ...
FROM RS00200M
LEFT JOIN RS00210M on RS00200M.ACTION_CD=RS00210M.ACTION_CD
LEFT JOIN UM00300M on UM00300M.SERIAL_NO=UM00210M.SERIAL_NO
GROUP BY
RS00200M.ACTION_NO,
RS00200M.ACTION_CD,
CAST(RS00200M.RESOLUTION_DT AS DATE) AS RESOLVED_DATE
推荐阅读
- r - 根据值在ggplot中设置标签
- c# - 将一个表单中的字段访问到另一个表单
- c# - 只有一个导航属性的一对一关系
- python - Pandas/Python 检查介于两者之间的值和输出值形成另一列
- scikit-learn - 随机森林赋予某个特征过多的权重
- istio - Istio1.9 中的速率限制功能实现
- .net - 如何从 Azure 媒体服务 DRM 获取许可证 URL
- jquery - JQuery - 未捕获的类型错误:无法读取谷歌地理编码中未定义的属性“1”
- apache-kafka - 如何检测保留策略已从硬盘中删除未处理的消费者数据?
- react-native - 在类组件上使用上下文