我正在嘗試進行查詢,但我對一件事感到很不愉快。假設我有一個看起來像這樣的表:
| ID | 樣本 | 物種 | 數量 | 團體 |
|---|---|---|---|---|
| 1 | 1 | 機管局 | 5 | 一種 |
| 2 | 1 | AB | 6 | 一種 |
| 3 | 1 | 交流電 | 10 | 一種 |
| 4 | 1 | 光碟 | 15 | C |
| 5 | 1 | 行政長官 | 20 | C |
| 6 | 1 | DA | 13 | D |
| 7 | 1 | D B | 7 | D |
| 8 | 1 | EA | 6 | 乙 |
| 9 | 1 | 英孚 | 4 | 乙 |
| 10 | 1 | EB | 2 | 乙 |
在我過濾的表中只有 1 個樣本(但我有很多),它包含物種、該物種的數量和一個官能團(從 A 到 E 只有五個組)。我想進行查詢以按樣本分組并制作特定組物種計數的列,如下所示:
| 樣本 | N_種 | A組 | B組 | C組 | D組 | E組 |
|---|---|---|---|---|---|---|
| 1 | 10 | 3 | 0 | 2 | 2 | 3 |
所以我必須計算物種(這很容易)但我不知道如何制作某個組的列,有人可以幫助我嗎?
uj5u.com熱心網友回復:
條件聚合應該這樣做:
SELECT
Sample,
COUNT(*) AS [Count Rows],
COUNT(CASE WHEN [Group] = 'A' THEN 1 END) AS [Group A],
COUNT(CASE WHEN [Group] = 'B' THEN 1 END) AS [Group B],
COUNT(CASE WHEN [Group] = 'C' THEN 1 END) AS [Group C],
COUNT(CASE WHEN [Group] = 'D' THEN 1 END) AS [Group D],
COUNT(CASE WHEN [Group] = 'E' THEN 1 END) AS [Group E]
FROM t
GROUP BY Sample
uj5u.com熱心網友回復:
您可以使用 PIVOT :
Select a.Sample,[A],[B],[C],[D],[E], [B] [A] [C] [D] [E] N_especies from
(select t.Sample,t.Grp from [WS_Database].[dbo].[test1] t) t
PIVOT (
COUNT(t.Grp)
for t.Grp in ([A],[B],[C],[D],[E])
) a
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/347754.html
標籤:sql-server 数数
