查詢 Q1 給了我一個表格,其中有一個國家/地區特定日期收到的檔案總數。
Q1:
select
b.country,
CAST(a.ProcessDate AS Date) AS DATE,
count(a.ProcessDate) AS total
from [dbo].[FileProcessLog] a
LEFT JOIN [dbo].[MasterFile] b ON a.FileID = b.FileID
where a.ProcessDate BETWEEN '2022-10-01' AND '2022-10-30'
GROUP BY
b.Country,
CAST(a.ProcessDate AS DATE)
查詢的示例輸出:

現在我希望這個表轉換為基于日期列作為標題的下表,并且檔案的數量應該根據國家分布,如下表所示:

我需要 SQL 將 Q1 轉換為上表格式。我試圖使用 Pivot 但無法撰寫正確的 sql 來提供期望的輸出。
uj5u.com熱心網友回復:
Pivot 的簡單語法使得難以撰寫列。
這是一個簡短的例子。
with t (Country ,Date,total)
as
(
Select 'newzealand' , '2022-10-03',21
Union ALL Select 'argentina' , '2022-10-04',5
Union ALL Select 'brazil' , '2022-10-04',4
Union ALL Select 'chile' , '2022-10-05',22
Union ALL Select 'mexico' , '2022-10-05',34
Union ALL Select 'peru' , '2022-10-06',1
)
Select
*
from
(
Select
Date,
Total,
Country
from t
) x
Pivot(
sum(total)
for Date in (
[2022-10-03],
[2022-10-04],
[2022-10-05],
[2022-10-06]
)
) as pivottable
然后你可以讓這個例子動態化,最好閱讀這篇文章,里面解釋得很好。
SQL Server 動態 PIVOT 查詢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/531581.html
