SQL Server - Include NULL using UNPIVOT

前端 未结 7 1560
暖寄归人
暖寄归人 2020-12-09 03:40

UNPIVOT will not return NULLs, but I need them in a comparison query. I am trying to avoid using ISNULL the following ex

7条回答
  •  春和景丽
    2020-12-09 03:51

    I've found left outer joining the UNPIVOT result to the full list of fields, conveniently pulled from INFORMATION_SCHEMA, to be a practical answer to this problem in some contexts.

    -- test data
    CREATE TABLE _t1(name varchar(20),object_id varchar(20),principal_id varchar(20),schema_id varchar(20),parent_object_id varchar(20),type varchar(20),type_desc varchar(20),create_date varchar(20),modify_date varchar(20),is_ms_shipped varchar(20),is_published varchar(20),is_schema_published varchar(20))
    INSERT INTO _t1 SELECT 'blah1', 3, NULL, 4, 0, 'blah2', 'blah3', '20100402 16:59:23.267', NULL, 1, 0, 0 
    
    -- example
    select c.COLUMN_NAME, Value
    from INFORMATION_SCHEMA.COLUMNS c
    left join (
      select * from _t1
    ) q1
    unpivot (Value for COLUMN_NAME in (name,object_id,principal_id,schema_id,parent_object_id,type,type_desc,create_date,modify_date,is_ms_shipped,is_published,is_schema_published)
    ) t on t.COLUMN_NAME = c.COLUMN_NAME
    where c.TABLE_NAME = '_t1'
    

    output looks like:

    +----------------------+-----------------------+
    |    COLUMN_NAME       |        Value          |
    +----------------------+-----------------------+
    | name                 | blah1                 |
    | object_id            | 3                     |
    | principal_id         | NULL                  | <======
    | schema_id            | 4                     |
    | parent_object_id     | 0                     |
    | type                 | blah2                 |
    | type_desc            | blah3                 |
    | create_date          | 20100402 16:59:23.26  |
    | modify_date          | NULL                  | <======
    | is_ms_shipped        | 1                     |
    | is_published         | 0                     |
    | is_schema_published  | 0                     |
    +----------------------+-----------------------+
        

提交回复
热议问题