【发布时间】:2013-06-25 21:23:55
【问题描述】:
假设我有一个名为Sales 的表。
我也有一个类似这样的存储过程:
SELECT A FROM SALES GROUP BY A
SELECT B FROM SALES GROUP BY B
SELECT C FROM SALES GROUP BY C
SELECT D FROM SALES GROUP BY D
SELECT E FROM SALES GROUP BY E
我可以将该存储过程中的 SELECT 语句数量减少到只有一个吗?
也就是说可以使用group by中的列名作为参数吗?
【问题讨论】:
-
除非你使用动态sql,否。
-
好吧,你可以简化这些
SELECT DISTINCT A FROM SALES等。你能补充更多细节吗 -
必须切换到动态 SQL,然后必须保护自己免受 SQL 注入。如果查询确实是相同的,并且具有相同的“含义”,这让我想知道是否应该有 5 列 - 也许应该有一个列表示可以包含 AE 的某种形式的“类型”,然后是包含“值”的单列(当前包含在 AE 列中) - 换句话说,您的架构设计似乎意外地将实际 data 放入列 names .
标签: sql tsql sql-server-2005 stored-procedures group-by