我對SQL非常陌生,從未做過任何複雜的事情。任何幫助,將不勝感激。自加入表將多行合併到一行中
我在表格下面的數據:
ID - TAG
1 - U
1 - N
1 - U
1 - N
1 - U
我的輸出要求是
ID - U - N
1 - 3 - 2
基本上我的輸出需要數N和將U的ID,併產生一個單獨的行,即ID。
謝謝你的時間。
我對SQL非常陌生,從未做過任何複雜的事情。任何幫助,將不勝感激。自加入表將多行合併到一行中
我在表格下面的數據:
ID - TAG
1 - U
1 - N
1 - U
1 - N
1 - U
我的輸出要求是
ID - U - N
1 - 3 - 2
基本上我的輸出需要數N和將U的ID,併產生一個單獨的行,即ID。
謝謝你的時間。
SELECT
ID,
COUNT(CASE WHEN TAG = 'U' THEN 1 END) AS [U],
COUNT(CASE WHEN TAG = 'N' THEN 1 END) AS [N]
FROM
someTable
GROUP BY
ID
UPDATE:
另一個海報(見下文)指出,我用方括號,其中一些RDBMS中使用雙引號。
+1適用於任何應用場合的通用解決方案。您可能想要注意,您使用的是SQL Server的引用約定,而不是標準引用。 – 2012-02-14 05:11:08
謝謝。我甚至沒有注意到(隧道視野)。 – 2012-02-14 05:12:43
我正在談論'[U]'和'[N]',標準SQL會希望使用帶引號的標識符「U」和「N」。我很確定每個人都對字符串文字的單引號感到滿意(至少我希望如此)。但是,是的,隧道視覺:) – 2012-02-14 05:23:08
在MySQL中,這是simplier比你想象:)
select id,
sum(if(tag = 'U', 1, 0)) as U,
sum(if(tag = 'N', 1, 0)) as N
from table1
group by id
基本上,每個ID你創建一個新的列(U和N)將基於是否標記有1或0具有「U」或「N」的值。這導致了這樣的事情:
+----+---+---+
| ID | U | N |
+----+---+---+
| 1 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
+----+---+---+
現在,我們需要做的就是通過ID組和距離U和N總結所有的值,我們得到:
+----+---+---+
| ID | U | N |
+----+---+---+
| 1 | 3 | 2 |
+----+---+---+
希望這有助於。
什麼DBMS? MySQL的? – 2012-02-14 05:04:14
你正在使用什麼數據庫? – Thilo 2012-02-14 05:04:22