SSRS每个项目类型的位置表

时间:2016-12-05 10:34:44

标签: sql list reporting-services sql-server-2016

我有一个基本查询,显示每个位置(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

结果如下:

enter image description here

我想要做的是在SSRS上创建一个摘要页面,该页面将显示当前包含每个项目的所有位置。理想情况下,它看起来像这样:

enter image description here

有50个地点和7个主要项目所以我需要它有8个标题(另外一个用于“其他”。)

在SSRS中有没有办法做到这一点?或者在SQL中有更好的解决方案吗?

谢谢。

1 个答案:

答案 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列,但保留分组:

1

当您运行此报告时,您将获得以下格式(我没有打扰将所有数据输入到我的数据集查询中,因此缺少值):

2