SQL Server 根据日期转换表并分配文件计数

bis0qfac  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(90)

查询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到上面的表格格式。我试图使用透视,但不能写正确的SQL,这将给予所需的输出。

erhoui1w

erhoui1w1#

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 dynamic PIVOT query?

相关问题