[英]SQL query having CASE WHEN EXISTS statement
我试图在 SQL 服务器中使用CASE WHEN EXISTS
子句创建 SQL 查询。 我假设我做错了什么,因为当我运行SELECT * FROM [Christmas_Sale]
时,SQL 需要永远加载代码。
CREATE VIEW [Christmas_Sale]
AS
SELECT
C.*,
CASE
WHEN EXISTS (SELECT S.Sale_Date
FROM [Christmas_Sale] s
WHERE C.ID = S.ID)
THEN 0
ELSE 1
END AS ChristmasSale
FROM
[Customer_Detail] C ;
我正在尝试编写一个子 select 如果 Sale_Date= 1 和 0 其他任何东西,我需要返回一个 1 。
您的查询语法看起来不错。 但既然你说:
我正在尝试编写一个子 select如果 Sale_Date= 1和 0 其他任何东西,我需要返回一个 1 。
...然后您可以通过在子查询的WHERE
子句中再添加一个条件来改写您的查询:
CREATE VIEW [Christmas_Sale]AS
SELECT
C.*,
CASE WHEN EXISTS (
SELECT 1
FROM [Christmas_Sale] s
WHERE C.ID = S.ID and S.Sale_Date = 1
) THEN 0 ELSE 1 END AS ChristmasSale
FROM [Customer_Detail] C ;
如果[Christmas_Sale]
中存在具有相应ID
和Sale_Date = 1
的记录,则ChristmasSale
将具有值1
,否则将显示0
。
此查询看起来正确:
CREATE VIEW [Christmas_Sale] AS
SELECT C.*,
(CASE WHEN EXISTS (SELECT 1
FROM [Christmas_Sale] s
WHERE C.ID = S.ID
)
THEN 0 ELSE 1
END) AS ChristmasSale
FROM [Customer_Detail] C ;
如果性能是一个问题,您需要一个关于Christmas_Sale(ID)
的索引。
请注意,子查询中的SELECT S.Sale_Date
是没有意义的,因为EXISTS
检查的是行而不是列。 因此,我将其替换为更简单的1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.