Tsql Reporting Services-如果current为NULL,则获取上一列值
我正在尝试减小查询返回到Tsql Reporting Services-如果current为NULL,则获取上一列值,tsql,reporting-services,sql-server-2014,Tsql,Reporting Services,Sql Server 2014,我正在尝试减小查询返回到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 Ge
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
转换数据会大大减少返回数据的大小
如果当前值为NULL
,是否可以实现一个公式来获取上一行的列值
我想测试一下,如果只渲染大量数据或处理较小的数据,但应用这样的表达式是否会更快。为什么不直接使用分组方式呢
SELECT Min(Id) as min, Max(ID) as max,Country,City
FROM myTable
GROUP BY Country,City
或
如果您的Id是顺序的,那么第一种方法可以工作,尽管我不确定Id是否重要
第二种方法可以为您提供一个数字,以便在应用程序中相当快地生成重复行,并返回更少的行
能给我更多关于你用例的信息吗 我认为使用带有内置函数的表达式是无法实现的。这可以通过使用自定义代码来完成,但考虑到您有数百列,这将影响处理时间。在减少数据检索时间的同时,也增加了处理时间。
SELECT count(Id) as rowRepeatNum,Country,City
FROM myTable
GROUP BY Country,City