2016-05-25 23 views
1

我正在更新一個表格與案例表達式,然後無法找到一種方法來總結一列來獲得總數,將不勝感激任何輸入。 在此先感謝。 戴夫SQL更新一個表,使用Case表達式,然後總計一列來獲得總數

--Declare &集Variables--

DECLARE @10001 INT = 20 
    DECLARE @10002 INT = 40 
    DECLARE @10003 INT = 60 
    DECLARE @10004 INT = 80 
    DECLARE @10005 INT = 100 

--Update--

UPDATE COA_DATE 
    SET Amount = 
     CASE 
    --Sales Volume 
      When GL_Account_No = 11000 Then @10001 * @10005 
      When GL_Account_No = 11001 Then @10001 * @10004 
      When GL_Account_No = 11002 Then @10001 * @10002 
      When GL_Account_No = 11003 Then @10001 * @10003 
      When GL_Account_No = 11004 Then @10001 * @10005 
     END 

---共創建列 'GL_Account_No' 即。

sum(11000+11001+11002+11003+11004) = row name 'Sales Total' 

---所需的輸出

--GL_Account_No Amount 
--11000   120,000 
--11001   96,000 
--11002   48,000 
--11003   72,000 
--11004   120,000 
--Sales Total  456,000 
+0

我不明白,總行應該對錶格有所瞭解嗎?或者你想選擇它?或者你已經有一排排了? – sagi

+0

它需要插入,然後一旦插入需要總和的金額。希望這是明確的..thnx – dgibson51

+0

是gl_account_no列字符串或數字?你可以插入'銷售總額',如果它的數字,你知道嗎? – sagi

回答

1

聚合通常好於某種報告層的處理,而不是嵌入在您的SQL查詢:語言設計與臺工作,並混合結果集中的數據(一些細節級別的行,總共一行)通常會導致比它的價值更大的麻煩。

就像所有不是「通常」的東西都是一個好主意,但也有例外。在這種情況下,SQL Server有ROLLUP運算符:搜索「SQL ROLLUP」會找到一些好的文章來幫助您入門(如this onethis one)。

在原始文章中運行UPDATE聲明之後,您可以使用下面的代碼(未經測試)從表中檢索數據。

SELECT 
    gl_account_no 
    ,SUM(Amount) AS Amount 
FROM COA_DATE 
WHERE gl_account_no IN (11000,11001,11002,11003,11004) 
GROUP BY gl_account_no 
WITH ROLLUP