0

我有在同一個表中的多個列中的數據總結:從表檢索特定的列從表

Col1 Col2 Col3 Col4 Col5 Col6 

我想要從Col1中到COL3的總和,從COL3到COL6,或從Col1中到COL6 ,但我無法弄清楚如何選擇這些特定的列。

+1

您可以顯示樣本數據,期望的結果,以及您將如何決定是否需要1-3,3-6或1-6? –

回答

1

對於單排:

select col1 + col2 + col3 from mytable 

(假設所有列是數字)

有關特定列中的所有值求和:

declare @sum int 
set @sum = 0 

select @sum = @sum + col1 from mytable 

求和例如所有行列1和2:

declare @sum int 
set @sum = 0 

select @sum = @sum + col1 + col2 from mytable 

爲有效應對空,你可以使用聚結功能:

declare @sum int 
set @sum = 0 

select @sum = @sum + coalesce(col1, 0) + coalesce(col2, 0) from mytable 
2

您可以創建一個視圖:

CREATE VIEW dbo.col_sums_from_some_table 
AS 
    SELECT 
    [Col1-3] = Col1 + Col2 + Col3, 
    [Col3-6] = Col3 + Col4 + Col5 + Col6, 
    [Col1-6] = Col1 + Col2 + Col3 + Col4 + Col5 + Col6 
    FROM dbo.table_name; 

(你需要用@davek指出如果這些列是可以爲空的那麼用COALESCE來包裝那些。)

然後你可以sim選擇直接應用SUM後的列:

SELECT [Col1-3] FROM dbo.col_sums_from_some_table; 

SELECT SUM([Col1-6] FROM dbo.col_sums_from_some_table; 

您也可以在表格上創建計算列, (我猜數據類型在這裏):

ALTER TABLE dbo.table_name ADD [Col1-3] 
    AS CONVERT(INT, COALESCE(Col1, 0) + COALESCE(Col2, 0) + COALESCE(Col3, 0)); 

你也可以選擇持續/索引這些計算列以及。

+0

感謝亞倫:)好年份是2007年2008年2009年2010年作爲具有銷售數據,我想選擇特定年份.....我將傳遞參數存儲procdure和基於它我會決定在哪裏的條件feild選擇ps:我用數字連接了這些列,所以我會知道那列1 = 1997列2 = 1998如果我想說列1-5或列2-6 ...任何建議 – user1691071

+0

請顯示樣本數據和期望的結果,正如我之前所要求的。目前這可能是通過一個數據透視表來完成的,或者它可能需要動態SQL。更明確地理解你想要做什麼(不會引入文字問題)會使你更容易幫助你解決問題。請閱讀:http://dba.blogoverflow.com/2012/06/help-us-help-you/ –

+0

感謝亞倫:)好吧,你有幾個月的數據表,你想選擇一段時間... .....您想要選擇總和(月1 +月2)或選擇總和(月1 +月2 +月3)或選擇總和(月2 +月3 +月4)的最終結果數據如下所示:X1(月1 +月2總計)= 30 ....等 – user1691071