【问题标题】:SQL pivot query returns null on some columnsSQL 透视查询在某些列上返回 null
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 2013-03-09
    • 2016-10-18
    • 1970-01-01
    相关资源
    最近更新 更多