0

これが私のクエリです:

  SELECT 
    [ASACCT].ACCT_MO_I as 'Types'
    ,sum(CASE when [TECH_V].[CLOS_T]='N4'  THEN 1 ELSE 0 END) AS 'N4'
    ,SUM(CASE when [TECH_V].[CLOS_T]='N3'  THEN 1 ELSE 0 END) AS 'N3'
    ,SUM(CASE when [TECH_V].[CLOS_T]='N2'  THEN 1 ELSE 0 END) AS 'N2'
  FROM [supt_oper_anls_dw].[dbo].[TECH_V] as [TECH_V]
   LEFT OUTER JOIN [supt_oper_anls_dw].[dbo].ACCT_DATE_DIM AS [ASACCT]
     ON CONVERT(varchar(10), [ASACCT].GREG_D, 101)
      = CONVERT(varchar(10), [TECH_V].[OPEN_TS], 101)
  WHERE [TECH_INCDT_V].[KGRP_I] ='73fd71ecf84f5080217683869fd819c3'
    and (
          ([ASACCT].ACCT_MO_I > (datepart(MONTH,getdate()))-1-6
       and [ASACCT].ACCT_MO_I <=(datepart(MONTH,getdate()))-1
       and [ASACCT].ACCT_YR_I = (datepart(year,getdate()))
          )
       OR ([ASACCT].ACCT_MO_I > (datepart(MONTH,getdate()))-6-1+12
       and [ASACCT].ACCT_YR_I = (datepart(year,getdate()))-1
          )
        )
    and [TECH_V].Notes like '%MFTFD%'
    and [TECH_V].notes like '%DEV%'
  GROUP BY [ASACCT].ACCT_MO_I,  [ASACCT].ACCT_YR_I

ゼロ行を表示していません。私の TECH_V テーブルには、提供した where 句のデータがありませんでした。しかし、出力をゼロとして表示したいのですが、代わりに行全体が省略されています。

以下のような出力が欲しい

1  1  2  3 
2  4  5  6
3  0  0  0
4  2  5  4
5  2  5  6
6  0  0  0

しかし、実際の出力では、3 番目と 6 番目が削除されました。

コード ロジックは正しいです。他の where 句に対して適切に機能しているためです。

4

1 に答える 1

0

テーブルの順序を入れ替える必要があります。

SELECT 
...
FROM [supt_oper_anls_dw].[dbo].ACCT_DATE_DIM AS [ASACCT] 
LEFT OUTER JOIN [supt_oper_anls_dw].[dbo].[TECH_V] as [TECH_V]
...
于 2013-03-17T19:41:36.690 に答える