0

私は自分のデータに対して以下のクエリを実行しました:-

SELECT     CONTRACTNAME,
           AccountNo,
           TransDate, 
           JournalNo,
           AuditTrail,           
           Description,       
           CONTRACTNUMBER,
           GROUPING(CONTRACTNUMBER) as CONTRACTNUMBER,   
           SUM(PAFeebillamount)as Total  
FROM       SRVS.dbo.BTQGLDistributionsWithProjectCodesHM
WHERE      TransDate > '2012' AND CONTRACTNUMBER <> '00900'
GROUP BY   CONTRACTNAME,  
           AccountNo,   
           TransDate,
           JournalNo, 
           AuditTrail,    
           Description,      
           CONTRACTNUMBER with rollup  
ORDER BY   GROUPING (CONTRACTNUMBER) 

これは私に結果を与えます:-

ここに画像の説明を入力

これを変更して、契約番号ごとに 1 行の合計を取得するにはどうすればよいですか。したがって、以下の例のようになります:-

ここに画像の説明を入力

現時点では、アカウント番号/ジャーナル番号などは要約にすぎないため、気にしません。

契約番号でグループを合計する最善の方法についてアドバイスをお探しですか?

4

3 に答える 3

1
SELECT CONTRACTNAME, CONTRACTNUMBER, grouping(CONTRACTNUMBER) as CONTRACTNUMBER
SUM(PAFeebillamount)as Total
FROM SRVS.dbo.BTQGLDistributionsWithProjectCodesHM 
WHERE TransDate > '2012' AND CONTRACTNUMBER <> '00900' 
GROUP BY 
  CONTRACTNAME,
  CONTRACTNUMBER with rollup
ORDER BY GROUPING (CONTRACTNUMBER)

これにより、所有している各契約の合計が得られます。複数の結果が得られるのは、contractName、Acct、Date、JournalNo、AuditTrail、および Desc でグループ化しているためです。完全な合計 (契約番号ごとに 1 つ) が必要な場合は、契約番号だけでグループ化する必要があります。

于 2012-10-08T14:01:56.967 に答える
1
SELECT     CONTRACTNAME,
           '' AccountNo,
           '' TransDate, 
           '' JournalNo,
           '' AuditTrail,           
           '' Description,       
           CONTRACTNUMBER,
           GROUPING(CONTRACTNUMBER) as CONTRACTNUMBER,   
           SUM(PAFeebillamount)as Total  
FROM       SRVS.dbo.BTQGLDistributionsWithProjectCodesHM
WHERE      TransDate > '2012' AND CONTRACTNUMBER <> '00900'
GROUP BY   CONTRACTNAME,                  
           CONTRACTNUMBER with rollup  
ORDER BY   GROUPING (CONTRACTNUMBER) 
于 2012-10-08T14:02:33.177 に答える
0

何を選択するか気にしないので、次のような集計関数としてAccountNo, TransDate, etc使用できます。MAX

SELECT
  CONTRACTNAME, 
  MAX(AccountNo), 
  MAX(TransDate), 
  MAX(JournalNo),
  MAX(AuditTrail),
  MAX(Description),
  CONTRACTNUMBER, 
  GROUPING(CONTRACTNUMBER) as CONTRACTNUMBER, 
  SUM(PAFeebillamount)as Total
FROM SRVS.dbo.BTQGLDistributionsWithProjectCodesHM 
WHERE TransDate > '2012' 
  AND CONTRACTNUMBER <> '00900' 
GROUP BY 
  CONTRACTNAME,
  CONTRACTNUMBER with rollup
ORDER BY GROUPING (CONTRACTNUMBER)

そして、それらが必要ない場合は、ステートメントからそれらを削除するか、 orSELECTに置き換えます。NULL''

SELECT
  CONTRACTNAME,
  CONTRACTNUMBER, 
  GROUPING(CONTRACTNUMBER) as CONTRACTNUMBER, 
  SUM(PAFeebillamount)as Total
FROM SRVS.dbo.BTQGLDistributionsWithProjectCodesHM 
WHERE TransDate > '2012' 
  AND CONTRACTNUMBER <> '00900' 
GROUP BY 
  CONTRACTNAME,
  CONTRACTNUMBER with rollup
ORDER BY GROUPING (CONTRACTNUMBER)
于 2012-10-08T14:02:32.557 に答える