如何在表的每一列中获取false数?

时间:2016-03-23 06:38:44

标签: sql sql-server-2005

我有一张表说T_myTable它有5列,并且都有一些值为true或false。

--------------------------------
col1 | col2 | col3 | col4 | col5
--------------------------------
true | false|false|true |false
false| true |false|false|false
true | false|false|true |false
false| false|false|true |false

我想得到的结果如下: -

col1 | col2 | col3 | col4 | col5
--------------------------------
2    | 3    |4     |1     |4

这里的数字是假的数字。 varchar 也是真假。

3 个答案:

答案 0 :(得分:2)

此:

SELECT SUM(CASE WHEN Col1 = 'false' THEN 1 ELSE 0 END) AS Col1
    , SUM(CASE WHEN Col2 = 'false' THEN 1 ELSE 0 END) AS Col2
    , SUM(CASE WHEN Col3 = 'false' THEN 1 ELSE 0 END) AS Col3
    , SUM(CASE WHEN Col4 = 'false' THEN 1 ELSE 0 END) AS Col4
    , SUM(CASE WHEN Col5 = 'false' THEN 1 ELSE 0 END) AS Col5
FROM T_myTable

答案 1 :(得分:0)

试试这个:

SELECT SUM(CASE col1 WHEN 'false' THEN 1 ELSE 0 END),
    SUM(CASE col2 WHEN 'false' THEN 1 ELSE 0 END),
    SUM(CASE col3 WHEN 'false' THEN 1 ELSE 0 END),
    SUM(CASE col4 WHEN 'false' THEN 1 ELSE 0 END),
    SUM(CASE col5 WHEN 'false' THEN 1 ELSE 0 END)
FROM T_myTable

答案 2 :(得分:0)

最有趣的方式之一是:

  1. 取消数据以便能够过滤数据
  2. 再次转移数据以获取'false'的计数
  3. 检查一下:

    SELECT [col1],[col2],[col3],[col4],[col5]
    FROM (
        SELECT MyVal, ColName
        FROM (
            SELECT *
            FROM T_myTable
            ) AS pvt
        UNPIVOT(MyVal FOR ColName IN ([col1],[col2],[col3],[col4],[col5])) AS unpvt
        WHERE MyVAl = 'false'
        ) As DT
    PIVOT (COUNT(MyVal) FOR ColName IN ([col1],[col2],[col3],[col4],[col5])) AS PT
    

    结果:

    col1    col2    col3    col4    col5
    2       3       4       1       4