ssrs隐藏的行正在加总

时间:2014-10-27 01:18:59

标签: sql sql-server reporting-services

我是SSRS和SQL Server的新手,我需要以下问题的帮助:

我有两张桌子。一个包含由一小组客户购买单个产品的时间戳记录。另一个表包含该产品价格变化的时间戳记录。

表1
PurchaseDateTime - primary keyCustCodekgs

表2

PriceChangeDateTime

我可以使用以下查询在Tablix中显示两个表中的所有必需信息:

SELECT input.purchasedatetime, 
       input.custcode, 
       input.kgs, 
       price.price, 
       price.changedatetime 
FROM   input 
       LEFT OUTER JOIN price 
                    ON input.purchasedatetime > price.changedatetime 

但是,查询会正确返回包含已取代价格的结果。我可以隐藏那些行,但总数仍然是总和。我可以将Price.ChangeDateTime分组为第三个子组,然后在TopN上对其进行过滤,但结果是相同的。显示是正确的,总数不是,这可能是预期的,因为总数是在更高级别的分组上。 我无法将可见性条件应用于SUM(),因为它不允许聚合,我隐藏在Previous()上。 我更喜欢查询完成工作,我已经看到其他一些数据库实现了LIMIT 1子句,但这里不支持。 我仍然要在报告级别尝试自定义代码,但我对VB代码不太熟悉。

我使用SQL Server 2014 Express和Visual Studio 2013集成shell作为数据工具或BI

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用GROUP BY和MAX

获取每个购买时间的最大更改日期时间

可以进一步加入这些值以获得每个购买时间的价格

SQL Fiddle

with cte 
as
(
SELECT input.purchasedatetime, MAX(price.changedatetime) as ChangeDateTime
FROM   input 
LEFT OUTER JOIN price 
ON input.purchasedatetime > price.changedatetime 
GROUP BY input.purchasedatetime
)
SELECT input.purchasedatetime, 
       input.custcode, 
       input.kgs, 
       price.price, 
       price.changedatetime 
FROM   input 
       JOIN cte
on input.purchasedatetime = cte.purchasedatetime
left join price
on cte.changedatetime = price.changedatetime