2012-10-08 109 views
0

我已經運行下面的查詢我的數據: -SQL SUM混亂

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) 

這給了我的結果: -

enter image description here

我怎樣才能改變這種做法,我得到一個單一每個合同編號的總數。所以它看起來像下面的例子: -

enter image description here

在這個時刻,我不打擾關於ACCNT沒有/雜誌沒有等,因爲它只會做個總結。

只是尋求建議,以最好的方式總結我的合同號碼組?

+2

但是在'accntNo','journalNo'等如果你沒有b返回othered? –

+0

這是另一個問題。目前滿意NULL值或零。我甚至可能會把他們從被展示出來。只要看一下最好的方法就是先嚐試總和 – user1086159

回答

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) 
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中進行分組。如果您想要一個完整的總額(每個合同編號一個),那麼您需要對合同編號進行分組。

0

既然你arn't打擾一下一下地選擇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) 

,如果你不想讓他們只從SELECT聲明中刪除或用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)