HeJ小鼠,
我需要SQL Server中的case语句的帮助。
基本上,我有三个产品,当总和等于2时,我希望它被计为1,否则为0.我想知道逻辑是用这个代码写的还是可以改进?< / p>
总和(hase = 1 OR hasd = 1 OR hasf = 1)= 2然后1其他0结束为Xavc的情况
我使用此代码尝试的是:客户可能没有所有三种产品,但如果他有两种产品或三种产品,那么它等于2,计数为1.
答案 0 :(得分:5)
这样的东西?
SELECT
CASE
WHEN hase + hasd + hasf = 2 THEN 1
ELSE 0
END AS Xavc
答案 1 :(得分:0)
我认为你正试图做这样的事情......
CASE WHEN SUM(CASE WHEN hase=1 THEN 1 ELSE 0 END)
+ SUM(CASE WHEN hasd=1 THEN 1 ELSE 0 END)
+ SUM(CASE WHEN hasf=1 THEN 1 ELSE 0 END) = 2
THEN 1 ELSE 0 END AS Xavc
在这种情况下试试这个..
CASE WHEN SUM(CASE WHEN hase=1 THEN 1 ELSE 0 END) + SUM(CASE WHEN hasd=1 THEN 1 ELSE 0 END) = 2
OR SUM(CASE WHEN hasd=1 THEN 1 ELSE 0 END) + SUM(CASE WHEN hasf=1 THEN 1 ELSE 0 END) = 2
OR SUM(CASE WHEN hase=1 THEN 1 ELSE 0 END) + SUM(CASE WHEN hasf=1 THEN 1 ELSE 0 END) = 2
THEN 1 ELSE 0 END AS Xavc