Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
显示默认值解码Oracle SQL_Sql_Oracle_Oracle11g_Decode - Fatal编程技术网

显示默认值解码Oracle SQL

显示默认值解码Oracle SQL,sql,oracle,oracle11g,decode,Sql,Oracle,Oracle11g,Decode,如果我的一个表中不存在用户,我将尝试将值设置为零。目前,我正在使用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 Thir

如果我的一个表中不存在用户,我将尝试将值设置为零。目前,我正在使用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;
问题是我有一个
第三个表(TT)
,其中包含附加值。如果
TT
有一个值不在
表T
中,那么我需要用0来显示所有解码值的记录

所需的输出如下所示:


D_代码,C_编号,第一个值,第二个值,第三个值,最后一个值
INF 600 2 0 0 0
INF 501 0 1 0
INF 400 0 0 0

其中
INF 400
不存在于表t中,仅存在于表TT中


有什么建议吗?

您的问题是您正在通过
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
表的更多详细信息,我只是猜测了它与
t
表之间的关系

旁注:始终使用SQL ANSI[LEFT]连接样式


另外请注意,对于您当前的查询和当前获取的字段,表
S
TT
是完全不相关的,除非您没有正确解释。

一个示例数据和所需的输出肯定会help@JorgeCampos当然,我想我明白了,但我不完全确定,所以我会给你一个答案,如果不是你想要的,你可以在评论中告诉我。此外,如果不是,则必须从三个表中添加满足所需输出的一些示例数据。