我正在写一份报告,需要显示一周的收据,按地点分组,并为每周的每一天分列。这将通过SSRS和SQL Server 2008 R2提供。最终的结果应该是这样的:(但所有7个星期几)TSQL报告 - 星期几的数据透视数据?
Location Monday Tuesday
Building3 $100 $75
Building4 $25 $35
Building5 $105 $21
我写了下面的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
ON Monday.Location = LocationKey.Location
好吧,这支点看起来真棒。现在尝试。 – bluehiro 2012-03-08 19:17:59
好的,我尝试了两种方法,他们都很好地工作。但是这个关键点很容易实现!非常感谢你,这正是我所期待的。我需要写一堆这些,所以我会用Pivot写所有这些。 – bluehiro 2012-03-08 19:52:20
最后的评论,我只是重复使用它在15分钟内推出类似的报告。嘿,是的! – bluehiro 2012-03-08 20:08:28