【发布时间】:2014-12-13 12:27:01
【问题描述】:
我正在尝试找出哪个商品访问了一个不在他的路线之外的 poi。为了做到这一点,我需要从 vp.poiid 中找到空值,但是当我进行分组时,我在该列上丢失了空值。
.
.
.
(SELECT
vp.routedate AS Date,
me.MerchName,
me.id AS Merchid,
ov.poiid AS Done,
vp.poiid AS Planned,
CASE WHEN ov.poiid IS NULL THEN COUNT(ov.poiid) END AS notDone,
CASE WHEN vp.poiid IS NULL THEN COUNT(vp.poiid) END AS outOfRoute
FROM atb_visitplan vp
FULL JOIN OutVisitData ov ON (vp.poiid = ov.poiid
AND ov.commitdate = vp.routedate
AND vp.merchid = ov.merchid)
INNER JOIN atb_merchs me ON (vp.merchid = me.id)
WHERE me.id = 1
GROUP BY
vp.routedate,
me.MerchAd,
me.id,
ov.poiid,
vp.poiid
) a
.
.
.
当我运行这个子查询时,我得到了这个视图:
date name id done planned notdone outofroute
2013-11-06 00:00:00.000 Seven Kavak 1 30 30 0 NULL
2013-11-06 00:00:00.000 Seven Kavak 1 34 34 0 NULL
2013-11-06 00:00:00.000 Seven Kavak 1 48 48 0 NULL
2013-11-06 00:00:00.000 Seven Kavak 1 54 54 0 NULL
2013-11-06 00:00:00.000 Seven Kavak 1 NULL 1235 1235 NULL
2013-11-06 00:00:00.000 Seven Kavak 1 NULL 1236 1236 NULL
2013-11-07 00:00:00.000 Seven Kavak 1 30 30 0 NULL
2013-11-07 00:00:00.000 Seven Kavak 1 49 49 0 NULL
正如您在此结果中看到的,outOfRoute 的值全部为 NULL(但实际上并非如此)。有什么办法可以看到这张表中的实际结果?我需要对这些列进行分组,这是一个子查询,我计算最终结果。计划列实际上有空值,但我也看不到它们。
PS:我用的是sql server
【问题讨论】:
标签: sql sql-server null group-by