我有一个基本查询,显示每个位置(FVTank)的最新产品是什么:
SELECT TOP 1
T0.[DateTime],
T0.[TankName],
T1.[Item]
FROM
t005_pci_data T0
INNER JOIN t001_fvbatch T1 ON T1.[FVBatch] = T0.[FVBatch]
WHERE
T0.[TankName] = 'FV101'
UNION
SELECT TOP 1
T0.[DateTime],
T0.[TankName],
T1.[Item]
FROM
t005_pci_data T0
INNER JOIN t001_fvbatch T1 ON T1.[FVBatch] = T0.[FVBatch]
WHERE
T0.[TankName] = 'FV102'
[...etc...]
ORDER BY
T0.[DateTime] DESC
结果如下:
我想要做的是在SSRS上创建一个摘要页面,该页面将显示当前包含每个项目的所有位置。理想情况下,它看起来像这样:
有50个地点和7个主要项目所以我需要它有8个标题(另外一个用于“其他”。)
在SSRS中有没有办法做到这一点?或者在SQL中有更好的解决方案吗?
谢谢。
答案 0 :(得分:1)
在数据集中添加一个额外的列,用于计算每个Item
的行号,按DateTime
字段排序:
row_number() over (partition by Item order by DateTime desc) as rn
根据您的问题中的来源查询来判断,这可能最好包含在您的最终查询周围select
:
select DateTime
,TankName
,Item
,row_number() over (partition by Item order by DateTime desc) as rn
from(
<Your original query here>
) a
然后,您可以将其用作行组,因为没有一个,您将无法在每个Item x
列中获得您所追求的顶部对齐格式。请务必删除rn
列,但保留分组:
当您运行此报告时,您将获得以下格式(我没有打扰将所有数据输入到我的数据集查询中,因此缺少值):