【发布时间】:2014-05-14 12:15:36
【问题描述】:
我有以下查询,它返回汽车注册号以及看到日期和位置:
SELECT PLATE_READ.RegNumber, PLATE_READ.DateSeen, ANPR_CAMERA.Name FROM PLATE_READ
REG DATESEEN LOCATION
=== ======== ========
5897HHS 20/12/2013 12:10:57 GIB EXIT
5897HHS 20/12/2013 12:05:03 AIRPORT BARRIER
我希望能够查询并返回每个注册号 1 行而不是三行,说明每个位置的日期,格式如下:
REG GIB EXIT AIRPORT BARRIER
=== ============= ==============
5897HHS 20/12/2013 12:10:57 20/12/2013 12:05:03
这是我目前所拥有的:
SELECT *
FROM
(SELECT TOP(100) PLATE_READ.DateSeen,
PLATE_READ.RegNumber,
ANPR_CAMERA_GROUP.Name
FROM ANPR_CAMERA
INNER JOIN ANPR_CAMERA_GROUP
ON ANPR_CAMERA.Id = ANPR_CAMERA_GROUP.Id
INNER JOIN ANPR_CAMERA_IN_GROUP
ON ANPR_CAMERA.Id = ANPR_CAMERA_IN_GROUP.ANPRCameraId
AND ANPR_CAMERA_GROUP.Id = ANPR_CAMERA_IN_GROUP.ANPRCameraGroupId
INNER JOIN PLATE_READ
ON ANPR_CAMERA.Id = PLATE_READ.CameraId
ORDER BY PLATE_READ.DateSeen DESC
) x pivot ( MAX(DateSeen) FOR Name IN ([GIB EXIT], [AIRPORT BARRIER]) )p
然而,这总是为“GIB EXIT”条目返回一个 NULL 值
【问题讨论】:
-
它正在返回
NULL,因为数据中没有匹配项。您需要检查前导和尾随空格以及其他类型的不等式。 -
没有空格,并且所有记录上的数据都匹配,因为在添加之前会对其进行检查。
-
你能用数据样本创建一个 SQLFiddle 吗?
标签: sql sql-server pivot