计算sql中相同列的数量并将其作为视图输出

时间:2013-08-12 04:51:33

标签: mysql sql

我试图创建一个sql视图,它需要计算具有相同内容的列数

例如

UID    person1_score    person2_score    person3_score    person4_score    person5_score    person6_score
1      1                1                1                1                2                2

最终输出将是

UID    person1_score    person2_score    person3_score    person4_score    person5_score    person6_score    score_with_1    score_with_2
1      1                1                1                1                2                2                4               2 
最终输出列(score_with_1和score_with_2)中的

计算该行中得分为“1”或“2”的人数

有没有办法让这种情况发生?

1 个答案:

答案 0 :(得分:0)

试试这个

CREATE VIEW view_Name AS
SELECT UID,    
       person1_score,
       person2_score,
       person3_score,
       person4_score,
       person5_score,
       person6_score 
       (SUM(CASE WHEN person1_score=1 THEN 1 ELSE 0 END)+
        SUM(CASE WHEN person2_score=1 THEN 1 ELSE 0 END)+
        SUM(CASE WHEN person3_score=1 THEN 1 ELSE 0 END)+
        SUM(CASE WHEN person4_score=1 THEN 1 ELSE 0 END)+
        SUM(CASE WHEN person5_score=1 THEN 1 ELSE 0 END)+
        SUM(CASE WHEN person6_score=1 THEN 1 ELSE 0 END))
       AS score_with_1,
       (SUM(CASE WHEN person1_score=2 THEN 1 ELSE 0 END)+
         SUM(CASE WHEN person2_score=2 THEN 1 ELSE 0 END)+
         SUM(CASE WHEN person3_score=2 THEN 1 ELSE 0 END)+
         SUM(CASE WHEN person4_score=2 THEN 1 ELSE 0 END)+
         SUM(CASE WHEN person5_score=2 THEN 1 ELSE 0 END)+
         SUM(CASE WHEN person6_score=2 THEN 1 ELSE 0 END))
      AS score_with_2
FROM Table t