【发布时间】:2018-09-03 23:29:25
【问题描述】:
我正在尝试过滤连接结果,但别名 cPlace 存在问题。
这是我的连接,但在 WHERE 子句上失败。我基本上显示的是 ISO 国家代码,国家在哪里是 107(美国)显示州缩写。
SELECT
CASE
WHEN co.CIDNo = 107 THEN al.State ELSE co.ISO
END AS cPlace,
al.ALIDNo
FROM
dbo.AssignedList AS al
INNER JOIN
dbo.Country co ON al.CIDNo = co.CIDNo
-->>> Fails after this point
WHERE
al.cPlace IN ('ALB', 'ATG', 'BEN', 'BFA', 'BHS', 'BLM', 'COM', 'Con', 'CT', 'ERI', 'ETH', 'GA', 'GLP', 'GUY', 'HI', 'KAZ', 'LBY', 'MA', 'MCO', 'MLT', 'MN', 'NPL', 'PRI', 'ROM', 'SDN', 'SGP', 'SLE', 'SLV', 'TGO', 'TN', 'UZB', 'WSM')
WHERE 子句之前的结果:
cPlace ALIDNo
--------------
DZA 1
AGO 2
BEN 3
CT 4
BFA 5
BDI 6
NY 7
提前感谢大家的帮助。
【问题讨论】:
-
您需要嵌套查询,可以使用公用表表达式 (
WITH...) 或派生表 (SELECT ... FROM (SELECT ...))
标签: sql inner-join where alias