我有一個(非常複雜的)SQL語句,我從很多不同的表中選擇數據,爲了應對不良的遺留數據結構,我有一些自定義根據其他列的值獲取其值的列。我已經與目前陳述CASE
解決了這個:在WHERE子句中,無效的列名錯誤使用CASE選擇的列
SELECT
...,
CASE channel
WHEN 1 THEN channel_1
WHEN 2 THEN channel_2
...
ELSE 0
END AS ChannelValue,
CASE channelu
WHEN 1 THEN channelu_1
WHEN 2 THEN channelu_2
...
ELSE '0'
END AS ChannelWithUnit,
...
FROM
...
--rest of statement continues with multiple joins and where/and clauses...
我得到的所有執行在MS SQL Server Management Studio中查詢時,列名被列爲我在AS
子句指定我所期望的結果。但是,由於某種原因,我不允許在WHERE
語句中使用條件值。如果我在查詢的末尾添加
AND ChannelValue > Limit * p.Percentage/100
,我得到一個錯誤在該行稱
消息207,級別16,狀態1,行152
無效的列名稱ChannelValue「
爲什麼不允許這樣做?我該怎麼做呢?