我正在编写一份报告,需要显示一周的收据,按地点分组,每周的每一天都有一个单独的列.这将通过SSRS和SQL Server 2008 R2提供.最终结果应如下所示:(但对于一周中的所有7天)
Location Monday Tuesday
Building3 $100 $75
Building4 $25 $35
Building5 $105 $21
Run Code Online (Sandbox Code Playgroud)
我编写了以下T-SQL SELECT语句,以从报告表变量(@reporting)中获取此数据.然后打算按位置对输出进行分组,以获得上面显示的布局.
原始数据列出了单行中的收货日期,总计和位置.我想转动数据,以便星期几显示在最前面.必须有一个比你在下面看到的更好的方法.有帮助吗?
SELECT
LocationKey.Location
,Sunday.Cost as Sunday
,Monday.Cost as Monday
FROM
(
SELECT DISTINCT Location
FROM @reporting
WHERE Location NOT IN ('Building01', 'Building02', '')
) AS LocationKey
LEFT JOIN
(SELECT
sunday.Location
,sunday.Cost
FROM @reporting as sunday (nolock)
WHERE DATEPART(weekday,sunday.ReceiptDate)= 1
) AS Sunday
ON Sunday.Location = LocationKey.Location
LEFT JOIN
(SELECT
Monday.Location,
Monday.Cost
FROM @reporting as Monday (nolock)
WHERE DATEPART(weekday,Monday.ReceiptDate)= 2
) AS Monday …Run Code Online (Sandbox Code Playgroud)