如果我的某个表中不存在用户,我试图将值设置为零。目前,我使用解码来计算满足特定条件的用户数量,然后显示结果。
.thing
问题是我有一个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
中不存在的值,那么我需要为所有Decode值显示该记录的0&#39。
所需的输出类似于:
Table T
表t中不存在
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
,仅在表TT中
有什么建议吗?
答案 0 :(得分:0)
您的问题是您正在按require(purrr)
require(readr)
# or require(tidyverse)
temp <- list.files(pattern="*.csv")
map_df(temp, read_delim, delim = "\t", escape_double = FALSE, trim_ws = TRUE)
过滤用户,这意味着任何不符合该条件的用户都不会在结果中出现。所以,根据我对你的问题的理解,你需要这个:
T.D_CODE = 'INF'
由于您没有提供有关SELECT T.D_CODE,
T.C_NO,
SUM(CASE WHEN T.D_CODE = 'INF' AND t.Value = 'A' THEN 1 ELSE 0 END) AS FirstValue,
SUM(CASE WHEN T.D_CODE = 'INF' AND t.Value = 'B' THEN 1 ELSE 0 END) AS AS SecondValue,
SUM(CASE WHEN T.D_CODE = 'INF' AND t.Value = 'C' THEN 1 ELSE 0 END) AS AS ThirdValue,
SUM(CASE WHEN T.D_CODE = 'INF' AND t.Value = 'D' THEN 1 ELSE 0 END) AS AS LastValue
FROM Table T
LEFT JOIN Table OtherTable S
ON T.T_SSN = S.SSN
LEFT JOIN AnotherTable TT
ON T.T_SSN = TT.SSN
GROUP BY t.D_CODE,
T.C_NO;
表的更多详细信息,我只是猜到了它与TT
表之间的关系。
附注:始终使用SQL ANSI [LEFT] JOINs样式。
ALSO 请注意,对于您当前的查询和当前提取的字段,表格T
和S
完全无关,除非您没有正确解释。