我有一個表,其中一列 ( TK) 包含多個值,也重復,另一列包含日期。
我需要回傳一個表,其中包含第一列distinct(TK)和其他列,如月份。
我在 SQL FIDDLE 中做了一個例子
http://sqlfiddle.com/#!18/14cb9f/28
| 傳統知識 | 一月 |
|---|---|
| 打開一個 | 4 |
| 打開 B | 4 |
| 傳統知識 | 二月 |
|---|---|
| 打開一個 | 4 |
| 打開 B | 4 |
我需要
| 傳統知識 | 一月 | 二月 |
|---|---|---|
| 打開一個 | 4 | 4 |
| 打開 B | 4 | 4 |
謝謝
uj5u.com熱心網友回復:
一個簡單的條件聚合應該可以解決問題
SELECT TK
,Janary = sum( case when month(datastart)=1 then 1 else 0 end )
,February = sum( case when month(datastart)=2 then 1 else 0 end )
From TEST
Where year(datastart)=2021
Group By TK
或者你可以使用 PIVOT
Select *
From (
Select TK
,Col = datename(month,DataStart)
,Val = 1
From TEST
Where year(datastart)=2021
) src
Pivot ( sum(Val) for Col in ([January] ,[February] ) ) pvt
uj5u.com熱心網友回復:
有多種方法可以做到這一點,但避免子查詢并使語法易于閱讀,這是我能得到的最簡單的方法:
SELECT
TK,
SUM(
CASE WHEN DATASTART >= '2021-01-01' AND DATASTART < '2021-02-01' THEN 1 ELSE 0 END
) AS JENUARY,
SUM(
CASE WHEN DATASTART >= '2021-02-01' AND DATASTART <= '2021-02-28' THEN 1 ELSE 0 END
) AS FEBRUARY
FROM
Test
GROUP BY
TK
看看 http://sqlfiddle.com/#!18/14cb9f/34
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/404975.html
標籤:
下一篇:使用存盤程序在SQLServer資料庫中同步來自Datafactory的元資料輸出錯誤:Json-在位置0找到意外的字符“S”
