我有一个(非常复杂的)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“
为什么不允许这样做?我该怎么做呢?