行按名称分组并获取空值

时间:2015-02-23 07:39:14

标签: sql-server null group-by views

我的视图中有以下结构

**Month|    Doctor| Executive|  Revenue**
1      |      A   |   1      |  100
1      |      B   |   1      |  200
NULL   |      C   |   1      |  0
NULL   |      D   |   2      |  0
2      |      A   |   1      |  400
1      |      E   |   1      |  100
NULL   |      F   |   2      |  0
2      |      A   |   1      |  300

我希望结果为

**Executive|    Doctor| Revenue|    Month**
  1        |      A   | 100    |    1
  1        |      B   | 200    |    1
  1        |      C   | 0      |    1
  1        |      E   | 100    |    1

我希望执行1的所有医生都进入输出,即使是列月有NULL值。

当我尝试使用查询时

select DocName,sum(rate),sum(patients) from DoctorRevenue
where SECode=1 and VisitMonth=10
group by DocName

它只给A,B,E,但我希望C进入输出。

2 个答案:

答案 0 :(得分:0)

您只需要在[VisitMonth]列的WHERE子句中包含NULL,即

WHERE SECode = 1 AND (VisitMonth = 1 OR VisitMonth IS NULL)

需要括号。

这是fiddle

答案 1 :(得分:0)

您需要在其中添加VisitMonth IS NULL,同时使用ISNULL功能将1显示为NULL值的月份。试试这个。

select Isnull(VisitMonth,1),DocName,sum(rate),sum(patients) from DoctorRevenue
where  SECode=1 
and    (VisitMonth = 1 OR VisitMonth IS NULL)
group by DocName,Isnull(VisitMonth,1)