我有在同一個表中的多個列中的數據總結:從表檢索特定的列從表
Col1 Col2 Col3 Col4 Col5 Col6
我想要從Col1中到COL3的總和,從COL3到COL6,或從Col1中到COL6 ,但我無法弄清楚如何選擇這些特定的列。
我有在同一個表中的多個列中的數據總結:從表檢索特定的列從表
Col1 Col2 Col3 Col4 Col5 Col6
我想要從Col1中到COL3的總和,從COL3到COL6,或從Col1中到COL6 ,但我無法弄清楚如何選擇這些特定的列。
對於單排:
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
您可以創建一個視圖:
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));
你也可以選擇持續/索引這些計算列以及。
感謝亞倫:)好年份是2007年2008年2009年2010年作爲具有銷售數據,我想選擇特定年份.....我將傳遞參數存儲procdure和基於它我會決定在哪裏的條件feild選擇ps:我用數字連接了這些列,所以我會知道那列1 = 1997列2 = 1998如果我想說列1-5或列2-6 ...任何建議 – user1691071
請顯示樣本數據和期望的結果,正如我之前所要求的。目前這可能是通過一個數據透視表來完成的,或者它可能需要動態SQL。更明確地理解你想要做什麼(不會引入文字問題)會使你更容易幫助你解決問題。請閱讀:http://dba.blogoverflow.com/2012/06/help-us-help-you/ –
感謝亞倫:)好吧,你有幾個月的數據表,你想選擇一段時間... .....您想要選擇總和(月1 +月2)或選擇總和(月1 +月2 +月3)或選擇總和(月2 +月3 +月4)的最終結果數據如下所示:X1(月1 +月2總計)= 30 ....等 – user1691071
您可以顯示樣本數據,期望的結果,以及您將如何決定是否需要1-3,3-6或1-6? –