【问题标题】:Only the Select Portion of Query as Variable to be used multiple times只有查询的选择部分作为变量被多次使用
【发布时间】:2016-03-21 21:13:15
【问题描述】:

我有一组查询,它们使用查询的相同 Select 部分,在 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,那么最好的工具是什么,因为在运行这些步骤时,我会将结果插入到另一个表中。

【问题讨论】:

  • 您必须使用动态 sql,这甚至不是有效的 varchar(max) 赋值。

标签: sql-server tsql variables select


【解决方案1】:

最好的方法是在字符串中构建查询,然后使用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

【讨论】:

  • 谢谢。我没有想到使用第二个变量。比较简单的解决方案。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 2022-11-29
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多