计算包含数据的列

时间:2016-01-12 13:22:24

标签: sql

我需要能够计算包含数据的列,并且不确定从哪里开始。该表格如下:

TargetID   Jan   Feb    Mar    Apr   May     Months with data
    1       33   Null    44     32   Null           3
    2      Null   44     32     16    17            4
    3       33    72     Null   Null  14            3

我无法弄清楚如何使用数据列创建月份,并希望得到任何帮助。 感谢

1 个答案:

答案 0 :(得分:2)

在SQL中执行此操作的一般方法是使用CASE语句:

select t.*,
       ((case when jan is not null then 1 else 0 end) +
        (case when feb is not null then 1 else 0 end) +
        (case when mar is not null then 1 else 0 end) +
        (case when apr is not null then 1 else 0 end) +
        (case when may is not null then 1 else 0 end)
       ) as MonthsWithData       
from t;

这是标准的SQL,应该适用于任何合理的数据库。

注意:您的数据结构看起来很尴尬。通常,您希望每个目标和月份有一行,其中一列包含计数。非规范化数据有时很有用,特别是对于最终用户报告,但总的来说,最好以“SQL”方式存储事物。