如何在where子句别名变量中筛选值,
CREATE TABLE BASE_Chq
(
ChequeInvoicePaymentId BIGINT NULL,
ChequeNumber VARCHAR(45) NOT NULL,
Amount MONEY NOT NULL
)
一旦我选择了整个表的值,我得到的结果如下,
SELECT IIf(ChequeInvoicePaymentId IS NULL, 'OWN', 'PARTY') AS ChequeType, ChequeNumber, Amount
BASE_Chq
我想筛选支票类型wise但我有错误,
错误代码:
SELECT IIf(ChequeInvoicePaymentId IS NULL, 'OWN', 'PARTY') AS ChequeType, ChequeNumber, Amount
FROM BASE_Chq
WHERE (ChequeType = 'PARTY')
如何在where子句中使用别名列进行搜索?
发布于 2019-07-31 11:43:41
中使用别名
无需询问查询的任何部分,就可以这样做:
SELECT IIf(ChequeInvoicePaymentId IS NULL, 'OWN', 'PARTY') AS ChequeType, ChequeNumber, Amount
FROM BASE_Chq
WHERE (IIf(ChequeInvoicePaymentId IS NULL, 'OWN', 'PARTY') = 'PARTY');
更好的方法是直接对IS NOT NULL
进行过滤:
SELECT IIf(ChequeInvoicePaymentId IS NULL, 'OWN', 'PARTY') AS ChequeType, ChequeNumber, Amount
FROM BASE_Chq
WHERE ChequeInvoicePaymentId IS NOT NULL;
一个小的DB<>Fiddle示例
where
子句中的筛选器可以在计算IIF
函数之前作为( SELECT
)谓词传递给表。
关于Erland在回答中的处理顺序的更多信息:
您不能这样做,因为SELECT语句是按以下顺序计算的: FROM-JOIN WHERE GROUP BY HAVING SELECT ORDER,所以在计算WHERE子句时,还没有定义SELECT列表中定义的别名。..。
https://dba.stackexchange.com/questions/244211
复制相似问题