我正在为各个州使用的应用程序创建一些报告。数据库有可能非常大。我想知道哪种方法是获取列总数的最佳方法。
目前我有类似于以下的 SQL:
SELECT count(case when prg.prefix_id = 1 then iss.id end) +
count(case when prg.prefix_id = 2 then iss.id end) as total,
count(case when prg.prefix_id = 1 then iss.id end) as c1,
count(case when prg.prefix_id = 2 then iss.id end) as c2
FROM dbo.TableName
WHERE ...
如您所见,这些列在其中两次。在一种情况下,我添加它们并显示总数,在另一种情况下,我只显示报告所需的各个值。
这是 SQL 的一个非常小的样本,有 20 多列,并且有时会将其中 4 列或更多列相加。
我正在考虑声明一些@Parameters 并将每个列设置为等于@Parameter,然后我可以添加我需要显示列总数的@Parameters,即:SET @Total = @c1 + @c2
但是,SQL Server 引擎是否会像这样多次关心列在那里?有没有更好的方法来做到这一点?