2017-11-01 6 views
1

ここでは最後にim.eindexの数を表示したいと思います。だから、私はこのためにunion allを使用しますが、レコードごとに合計があるような結果が表示されます。クエリ上から選択組合

select 
      '' Field1, 
       '' Field2, 
       'Comp' GField1, 
       ltrim(rtrim(cm.CName)) CName, 
       count(im.eindex) Emp 
     From Log l, 
       IMaster im, 
       cmaste cm 
     where cm.cindex=im.cindex 
       and im.iindex=sms.iindex 
       and im.Month = 10 
       and im.year = 2017 
       and cm.type 
       group by cm.CName 

    union all 

      select 
      '' Field1, 
       '' Field2, 
       'Comp' GField1, 
       ‘total’ CName, 
       sum(im.eindex) Emp 
       From Log l, 
       IMaster im, 
       cmaste cm 
     where cm.cindex=im.cindex 
       and im.iindex=sms.iindex 
       and im.Month = 10 
       and im.year = 2017 
       and cm.type 
       group by cm.CName 

出力は

Field1 Field2 GField1 CName Employees 
         ABC COM 91 
         XYZ COMP 15 
         Total 7759562 
         Total 21211214 
+1

。あなたの実際のデータ+希望の出力を投稿してください。いくつかの種類のレポートを準備したいと思うので、集計を使用して行を追加します。私は 'GROUP BY GROUPING SETS()'を正しいagg関数で使用することを提案します。 – lad2025

答えて

0

である私たちは、すべてのCNameの合計を表示したいと最後group by文を削除します。

select 
      '' Field1, 
       '' Field2, 
       'Comp' GField1, 
       ltrim(rtrim(cm.CName)) CName, 
       count(im.eindex) Emp 
     From Log l, 
       IMaster im, 
       cmaste cm 
     where cm.cindex=im.cindex 
       and im.iindex=sms.iindex 
       and im.Month = 10 
       and im.year = 2017 
       and cm.type 
       group by cm.CName 

    union all 

      select 
      '' Field1, 
       '' Field2, 
       'Comp' GField1, 
       ‘total’ CName, 
       count(im.eindex) Emp 
       From Log l, 
       IMaster im, 
       cmaste cm 
     where cm.cindex=im.cindex 
       and im.iindex=sms.iindex 
       and im.Month = 10 
       and im.year = 2017 
       and cm.type 

が第二SELECT手段でgroup byを持ちますcm.CnameごとにSUMが表示されます。

あなたも、これを簡素化することができます:それはXYProblemのように見える

select 
    '' Field1, 
     '' Field2, 
     'Comp' GField1, 
     ISNULL(ltrim(rtrim(cm.CName)), 'Total') CName, 
     count(im.eindex) Emp 
From Log l, 
     IMaster im, 
     cmaste cm 
where cm.cindex=im.cindex 
     and im.iindex=sms.iindex 
     and im.Month = 10 
     and im.year = 2017 
     and cm.type 
     group by GROUPING SETS 
     (
      (cm.CName) 
      ,() 
     ) 
関連する問題