我有一组查询使用相同的Select部分查询,其中包含不同的连接,Where子句等在Select部分下面。选择部分很长,因为我必须运行此查询的版本接近30次,每当我必须进行更改时,我必须进行30次更改。有没有办法只将这些查询的Select部分捕获为变量并每次调用该变量?这个过程非常麻烦,所以如果我能够为Select部分执行此操作,并且大多数Where子句可以压缩成大约5个不同的分组,那将是很棒的,但我不知道如何去做。这是我正在寻找的一个简单例子:
DECLARE @TestSelect varchar(max) = (SELECT Field1, Field2, Field3, ..., Field 22);
@TestSelect
FROM Table1
LEFT OUTER JOIN Table2
ON Table1.id = Table2.id
使用tsql可以吗?如果不使用tsql,那么最好的工具是什么,因为正在运行这些步骤,我将结果插入到另一个表中。
答案 0 :(得分:2)
执行此操作的最佳方法是在字符串中构建查询,然后使用sp_executesql
运行动态查询。例如:
DECLARE @TestSelect varchar(max)
DECLARE @TestQuery varchar(max)
SET @TestSelect = '(SELECT Field1, Field2, Field3, ..., Field 22)'
SET @TestQuery = @TestSelect + ' FROM Table1 LEFT OUTER JOIN Table2 ON Table1.id = Table2.id'
EXECUTE sp_executesql @TestQuery