代码之家  ›  专栏  ›  技术社区  ›  CharlieShi

遇到NULL值时显示所有行

  •  0
  • CharlieShi  · 技术社区  · 11 年前

    我使用sysbase,这里有一张表,

    id type value
    1   aa    11
    2   bb    22
    2   bb    22
    2   dd    44
    3   aa    11
    3   bb    22
    4   dd    44
    

    我只想展示一下:

    id  aa  bb
    1   11  
    2       22
    3   11  22
    4       
    

    也就是说,为所有id选择所有的“aa”和“bb”属性,如果id没有aa属性或bb属性,则将其留空。 我想也许工会对我来说很有用,但有人能在这方面帮助我吗?

    1 回复  |  直到 11 年前
        1
  •  0
  •   SQLGuru    11 年前

    试试这个。它可能不是你想要的100%的输出,但它给了你一个良好的开始。

    您也可以在此处查看: http://www.sqlfiddle.com/#!6/f9eb8/1/0

    SELECT
      P0.ID,
      ISNULL(MAX(P0.aa), '') as 'aa',
      ISNULL(MAX(P0.bb), '') as 'bb',
      ISNULL(MAX(P0.cc), '') as 'cc',
      ISNULL(MAX(P0.dd), '') as 'dd'
    FROM
    (
      SELECT
        ID,
        CASE type
          WHEN 'aa' THEN Value
          ELSE NULL
        END AS 'aa',
        CASE type
          WHEN 'bb' THEN Value
          ELSE NULL
        END AS 'bb',
        CASE type
          WHEN 'cc' THEN Value
          ELSE NULL
        END AS 'cc',
        CASE type
          WHEN 'dd' THEN Value
          ELSE NULL
        END AS 'dd'
      FROM
        blah
     ) P0
    GROUP BY
      P0.ID