【发布时间】:2017-04-10 22:43:18
【问题描述】:
如果我的一张表中不存在用户,我会尝试将值设置为零。目前,我正在使用decode来统计满足一定条件的用户数,然后显示结果。
SELECT T.D_CODE,
T.C_NO,
SUM(DECODE(t.Value, 'A', 1, 0)) AS FirstValue,
SUM(DECODE(t.Value, 'B', 1, 0)) AS SecondValue,
SUM(DECODE(t.Value, 'C', 1, 0)) AS ThirdValue,
SUM(DECODE(t.Value, 'F', 1, 0)) AS LastValue
FROM Table T,
Table OtherTable S
WHERE T.T_SSN = S.SSN(+)
AND T.D_CODE = 'INF'
GROUP BY t.D_CODE,
T.C_NO;
问题是我有一个third table (TT),其中包含其他值。如果TT 的值在Table T 中不存在,那么我需要将所有解码值的记录都显示为 0。
所需的输出类似于:
D_CODE, C_NO, FirstValue, SecondValue, ThirdValue, LastValue
INF 600 2 0 0 0
INF 501 0 0 1 0
INF 400 0 0 0 0
其中INF 400不存在于表t中,仅存在于表TT中
有什么建议吗?
【问题讨论】:
-
样本数据和所需的输出肯定会有所帮助
-
@JorgeCampos 当然,发布了所需的输出
-
我想我明白了,但我不完全确定,所以我会为您提供答案,如果不是您想要的,请在 cmets 中告诉我。此外,如果不是,您将不得不从满足您所需输出的三个表中添加一些示例数据。
标签: sql oracle oracle11g decode