簡體   English   中英

如何將數據庫表的總和變為變量?

[英]How can i get the sum of a database table to a variable?

我有一個名為Deposit的數據庫表,其中一個列名是30-12-2013 該列有兩個值,例如54,26。

我想將該列列的總和變為變量。 我使用以下代碼:

con.Open();
SqlCeCommand cmd11 = con.CreateCommand();
cmd11.CommandText = "select sum(30-12-2013) from Deposit";
int result = ((int)cmd11.ExecuteScalar());
displaylabel.Text = result.ToString();
con.Close();

但是,我得到變量'result'的值為-3990。

我的代碼有什么問題..請幫幫我..先謝謝..

(30-12-2013)* 2(因為你有兩個條目)= -1995 * 2 = -3990

你必須使用:

SELECT sum([30-12-2013])
FROM   dbo.Deposit 

嘗試為具有不尋常名稱的列使用括號 -

cmd11.CommandText = "SELECT SUM([30-12-2013]) FROM Deposit";

這已經得到了回答,所以我沒有回答你的實際問題,而是提出另一種解決方案。

而不是如下表:

SomeColumn | 30-12-2013 | 31-12-2013 | 01-01-2014
-----------+------------+------------+------------
    A      |    540     |    100     |    246
    B      |    130     |     90     |    377

有一個規范化的表格:

SomeColumn |    Date    | Amount 
-----------+------------+--------
   A       | 2013-12-30 |  540
   A       | 2013-12-31 |  100
   A       | 2014-01-01 |  246
   B       | 2013-12-30 |  130
   B       | 2013-12-31 |  90
   B       | 2014-01-01 |  377

這意味着您不需要每天都有新列。 所以你的查詢將成為:

SELECT  SUM(Amount) AS Amount
FROM    Deposit
WHERE   Date = '20131230';

如果您想重現原始結構,可以使用:

SELECT  SomeColumn,
        SUM(CASE WHEN Date = '20131230' THEN Amount ELSE 0 END) AS [30-12-2013],
        SUM(CASE WHEN Date = '20131231' THEN Amount ELSE 0 END) AS [31-12-2013],
        SUM(CASE WHEN Date = '20140101' THEN Amount ELSE 0 END) AS [01-01-2014]
FROM    Deposit
GROUP BY SomeColumn;

關於SQL小提琴的示例 (使用SQL Server,因為它不支持SQL Server CE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM