如何避免必须在WHERE
条款中一遍又一遍地输入相同的CASE WHEN...
?避免重复出现的情况
CASE WHEN rawGlass.blockHeight > rawGlass.blockWidth THEN rawGlass.blockWidth ELSE rawGlass.blockHeight END
在此查询中经常重复。我只想做一次。我已经知道在WHERE
子句中引用[Glass Height]
将导致Invalid column...
错误。
我意识到可能有其他解决方案不涉及使用CASE WHEN
这个特定的实例,我欢迎他们,但我真的很喜欢这个问题的答案,因为我遇到了这个问题与其他查询之前的问题。
SELECT
parts.pgwName AS [Part Name],
parts.active AS [Active],
cutVinyl.boardName AS [Vinyl Board],
cutVinyl.rollWidth AS [Roll Width],
CASE WHEN rawGlass.blockHeight > rawGlass.blockWidth THEN rawGlass.blockWidth ELSE rawGlass.blockHeight END AS [Glass Height]
FROM
parts
LEFT JOIN cutVinyl ON parts.vinylBoard = cutVinyl.boardName
LEFT JOIN rawGlass ON parts.outerSku = rawGlass.sku
WHERE
(
(cutVinyl.stretchRadius IS NOT NULL OR cutVinyl.stretchRadius = 0) AND
cutVinyl.rollWidth < (CASE WHEN rawGlass.blockHeight > rawGlass.blockWidth THEN rawGlass.blockWidth ELSE rawGlass.blockHeight END)
) ...
注:的情况不胜枚举一段时间,所以包裹整个WHERE
子句中的一个CASE WHEN...
语句,然后重复两次的条件并没有真正帮助任何。
使用派生表或公用表表达式? – LittleBobbyTables
什么表是blockheight和宽度?您可以将from子句中的表更改为提前设置Glass_hieght的子查询。 – Twelfth
[在选择案例和where子句中避免重复性条件]可能的重复(http://stackoverflow.com/questions/12116662/avoiding-repetitive-conditions-in-the-select-case-and-where-clause) – LittleBobbyTables