SQL Server查询带有多个何种情况的情况
我正在尝试编写一个SQL选择,
SELECT CASE WHEN table1.col1 IS NOT NULL
AND table2.col1='someValue' THEN 'YES'
WHEN main.col2 IS NOT NULL
AND table2.col1 NOT LIKE '%Rejected%' THEN 'YES'
ELSE NULL END AS eligible,table1.col13,table2.col14
FROM table1
INNER JOIN table2 ON table1.col5=table2.col6
WHERE eligible='YES'
但要获得无效的列名称“合格”,请建议
I am trying to write a sql select like below
SELECT CASE WHEN table1.col1 IS NOT NULL
AND table2.col1='someValue' THEN 'YES'
WHEN main.col2 IS NOT NULL
AND table2.col1 NOT LIKE '%Rejected%' THEN 'YES'
ELSE NULL END AS eligible,table1.col13,table2.col14
FROM table1
INNER JOIN table2 ON table1.col5=table2.col6
WHERE eligible='YES'
but getting Invalid column name 'eligible', please advice
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

您可能要寻找的不是
符合条件
的地方。相反,它是符合条件
的:由于列
合格
实际上是您case> case
表达式的别名,并且不是来自任何表格t在其中中使用它。如果您更熟悉使用
where
,则首先将基本查询作为子查询来解决:What you probably looking for is not
WHERE eligible
. Instead it'sHAVING eligible
:Since the column
eligible
is actually an alias of yourCASE
expression and is not from any of your tables then you can't use it inWHERE
.If you're more familiar with using
WHERE
, here's a workaround by making the base query as subquery first: