Reporting Services - 如果current为NULL,则获取上一列值

时间:2016-02-12 09:45:01

标签: tsql reporting-services sql-server-2014

我正在尝试减少9 <= quantity <= 42 查询返回T-SQL的数据大小。例如,我们假设我们有以下行集:

Reporting Services

可以轻松转换为:

ID  Country City
1   Germany Berlin
2   Germany Berlin
3   Germany Berlin
4   Germany Berlin
5   Germany Hamburg
6   Germany Hamburg
7   Germany Hamburg
8   Germany Hamburg
9   Germany Berlin
10  Germany Berlin

由于我可能有成千上万的重复值(以及数百列),我知道使用这样的ID Country City 1 Germany Berlin 2 NULL NULL 3 NULL NULL 4 NULL NULL 5 NULL Hamburg 6 NULL NULL 7 NULL NULL 8 NULL NULL 9 NULL Berlin 10 NULL NULL 转换数据会大大减少返回数据的大小。

是否可以实现一个公式,如果当前的列值为NULLs,它会获得前一行的列值?

我想测试是否更快地渲染大量数据或使用较小的数据但是应用这样的表达式。

1 个答案:

答案 0 :(得分:1)

为什么不使用Group BY

SELECT Min(Id) as min, Max(ID) as max,Country,City 
FROM myTable 
GROUP BY Country,City

或者

SELECT count(Id) as rowRepeatNum,Country,City 
FROM myTable 
GROUP BY Country,City

如果你的Ids是顺序的,第一种方法会起作用,虽然我不确定Id是否重要。

第二种方法可以为您提供一个循环数字,以便在您的应用程序中快速生成重复行并返回少得多的行。

可以给我更多关于你的用例的信息吗?