2012-01-24 122 views
2

我有一个sql查询,需要在整个查询中多次重复相同的SELECT语句作为其他计算的输入。如何避免两次写入SQL Server查询以避免重复?

如何编写查询以便我只定义一次重复的SELECT SQL语句?有没有一种方法可以避免在查询中重复出现错误?

UPDATE: 在这种情况下从SELECT返回的数据被预期在箱子

CTE和表变量的另外20%的情况下和100-200行最大的80%< 100行这两个看起来都是有效的答案 - 但是你怎么知道在任何情况下哪一个更合适?

+0

搜索CTE。 –

+0

@ypercube - 'CTE'在这里不太适合,因为它只是针对一个查询。一旦我选择*从CTE'下一个查询不能看到它,除非我重新定义CTE哪种类型的目的失败:) – JNK

+0

@JNK:在这种情况下,视图可能会得心应手。我以为OP想要在同一个查询中多次使用相同的SELECT。 –

回答

7

使用select插入Temp表或表变量。 (如果您认为数据集很小,请使用表变量,如果数据集很大,则使用临时表)。然后,在所有后续查询中,加入临时表或表变量,就像任何其他表一样。

+1

其他考虑因素 - 临时表可以被索引并且有约束,哪些变量不能。临时表也在内部作用域中可见,而表格变量仅在直接作用域中可见。 – JNK

+0

虽然表变量的tempdb锁定和并发问题的潜力较低。这并不总是一个明确的选择。 – mwigdahl