具有相同值的2列计数案例(已澄清)

时间:2017-11-15 20:40:20

标签: sql-server tsql

基本上,当2列中存在值时,我希望COUNT为CASE。

例如:

SELECT
   COUNT
      (CASE WHEN 1.sample AND 2.sample IN ('a','b','c')
       THEN 1
       ELSE NULL
       END
      )   AS CASE
FROM table1 AS 1
INNER JOIN table2 AS 2
...

消息:

  

将varchar值'08:12.06'转换为数据时转换失败   输入int。警告:聚合或其他消除了空值   SET操作。

我得到了触发错误的内容,我只是不知道在两列中都存在值时计算情况的解决方案。

2 个答案:

答案 0 :(得分:1)

您需要单独列出列以进行比较。通常我指定要计数的列,并且您不需要为else条件设置NULL。

SELECT
   COUNT
      (CASE WHEN 1.sample IS NULL OR 2.sample IS NULL THEN 0 
            WHEN (    1.sample IN ('a','b','c')
                  AND 2.sample IN ('a','b','c')
                 )
       THEN 1.sample
       END
      )   AS CASE
FROM table1 AS 1
INNER JOIN table2 AS 2 ON....

答案 1 :(得分:1)

你可以尝试一下,看看它是否有效吗?我认为这就是你要找的东西。

SELECT
   SUM
      (CASE WHEN 1.sample IN ('a','b','c') AND 2.sample IN ('a','b','c')
       THEN 1
       ELSE 0
       END
      )   AS CASE
FROM table1 AS 1
INNER JOIN table2 AS 2