【发布时间】:2017-07-28 17:28:15
【问题描述】:
我正在使用 SSRS 2014。
我只想显示前 50 行。请问这个用什么表达方式。
我使用了top n 功能,但它不起作用。所以我想另辟蹊径,通过表达式来达到效果。
下图未添加“top n”。在下图中,我只想在供应商列中显示前 50 行
下面的图片添加了“top n”。然后结果就改变了。 Concession 列中的几行缺失。
SQL代码是,
SELECT s.[CusNo] Supplier,
RTRIM(CAST(s.[Customer] AS VARCHAR(50)) ) AS Name,
s.[ConcessionNo] Concession,
RTRIM(CAST(s.[ConcessionName] AS VARCHAR(50)) ) AS ConcessionName,
sum(case when s.Date between convert(date,dateadd(wk, datediff(wk, 0, getdate()) - 1, 0) - 1) and convert(date,dateadd(wk, datediff(wk, 0, getdate()) - 1, 0) + 5)
then s.SELLINC else 0 end) ActualSales,
sum(case when s.Date
BETWEEN
convert(varchar(10), DATEADD(day, DATEDIFF(day, '19000107', DATEADD(month, DATEDIFF(MONTH, 0, CONVERT(date, CONVERT(VARCHAR(4), (CASE WHEN MONTH(GetDate()) = 1 THEN CONVERT(VARCHAR(4), GetDate(), 112) - 1 ELSE CONVERT(VARCHAR(4), GetDate(), 112) END), 112) + '0101')), 30)) / 7 * 7, '19000107'), 120)
AND
Convert(date, dateadd(wk, datediff(wk, 0, GETDATE()) - 1, 0) + 5)
then s.SELLINC else 0 end) YrToDateActual
FROM [dbo].[CustomerReports] s
WHERE s.BRN = 1 or s.BRN = 2 or s.BRN = 3 or s.BRN = 4 or s.BRN = 5 or s.SELLINC is null or s.SELLINC = '0'
GROUP BY s.[CusNo], s.[Customer], s.ConcessionNo, s.ConcessionName
order by YrToDateActual desc
有什么帮助吗?
【问题讨论】:
-
您的数据是否有重复值?
-
@jacky-montevirgen 不,我没有任何重复值
-
@snowlockk 感谢您的链接。该解决方案不起作用
标签: sql sql-server tsql reporting-services ssrs-2008