【问题标题】:SSRS Table of locations per item typeSSRS 每个项目类型的位置表
【发布时间】:2016-12-05 10:34:43
【问题描述】:

我有一个基本查询,它显示要放置在每个位置 (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 来做?

谢谢。

【问题讨论】:

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


    【解决方案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 列但保留分组:

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

    【讨论】:

    • 这不包括“其他”列,但我想我可能只是更喜欢这个演示文稿。非常感谢。
    • 没有什么能阻止您拥有“其他”列,您希望在其中看到什么以及这些数据来自哪里?
    • 通过使用 CASE WHEN 修改查询很容易修复。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2021-09-19
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 2011-08-25
    相关资源
    最近更新 更多