SQL pivot查询在某些列上返回null

时间:2014-05-14 12:15:37

标签: sql sql-server pivot

我有以下查询返回汽车注册号以及查看日期和位置:

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值。条目

1 个答案:

答案 0 :(得分:0)

尝试构建脚本来测试您的示例(如果您提供了这些脚本会很有帮助),答案显而易见。

您在第一个SQL中选择 ANPR_CAMERA .Name,在您的数据透视SQL中选择 ANPR_CAMERA_GROUP .Name。