我正在嘗試使用SQL查找表中特定值的總和。示例表是:SQL中特定值的總和
+-------+-------+-------+-------+-------+-------+-------+
| ID | Co1 | Va1 | Co2 | Va2 | Co3 | Va3 |
+-------+-------+-------+-------+-------+-------+-------+
| 01 | AA1 | 23.0| AA2 | 11.2| AA3 | 328.34|
| 02 | AA2 | 27.0| AA3 | 234.56| AA4 | 23.8|
| 03 | AA1 | 409.01| AA4 | 234.98| NULL | NULL |
+-------+-------+-------+-------+-------+-------+-------+
我有35個這樣的'代碼'列和值。
我需要的是選擇一個只有一個代碼的表。說我需要代碼AA3,這將是(這裏不需要代碼列,但只顯示在那裏我得到的值):
+-------+-------+--------+
| ID | Code | Value |
+-------+-------+--------+
| 01 | AA3 | 328.34|
| 02 | AA3 | 234.56|
| 03 | AA3 | 0|
+-------+-------+--------+
我稍後會需要另一個(獨立)查詢包含總和幾個代碼,例如代碼AA1和AA2的總和。
+-------+---------+
| ID | Value |
+-------+---------+
| 01 | 34.2|
| 02 | 27.0|
| 03 | 409.01|
+-------+---------+
我在考慮讓每個35列都有一個'WHERE',但這真的很乏味,而且看起來效率不高。我想知道是否有辦法通過SQL來做到這一點(我可以用Excel來做到這一點,它會產生奇蹟)。
也許如果有一種方法可以通過一行「搜索」,返回列名稱,然後使用該列名稱檢索數字?
讓我知道如果你需要更多的信息=)
, SQL Server,Oracle,MySQL?在第一個句子中,你說「使用SQL」,你的意思是MS SQL Server?在最後一個問題中,你是否只有3個代碼列? SUM僅適用於AA1和AA2或更多組合? – Yaroslav 2012-08-06 09:02:17
啊,是的,我的壞。這是我正在使用的SQL Server 2008R2。 – Jerry 2012-08-06 09:31:25
出於某種原因,我沒有看到您的其他評論......哦,好吧。是的,實際上有35個代碼列和35個數量列。代碼從AA1到AA652不等。對於第二部分(添加幾個代碼),我需要添加9個代碼:AA74,AA76,AA78等。 – Jerry 2012-08-06 10:12:54