如何正确使用case语句时

时间:2013-12-01 13:39:07

标签: sql sql-server case

HeJ小鼠,

我需要SQL Server中的case语句的帮助。

基本上,我有三个产品,当总和等于2时,我希望它被计为1,否则为0.我想知道逻辑是用这个代码写的还是可以改进?< / p>

总和(hase = 1 OR hasd = 1 OR hasf = 1)= 2然后1其他0结束为Xavc的情况

我使用此代码尝试的是:客户可能没有所有三种产品,但如果他有两种产品或三种产品,那么它等于2,计数为1.

2 个答案:

答案 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