2016-12-29 8 views
1

とピボットが、私は次のようになり、データベースのテーブルを持っています。削除/インストールSQL Server 2008の、無集計のfuction

product||installed/removed||date 
     A||    1||Jan 1, 2016 
     A||    0||Mar 16, 2016 
     A||    1||May 15, 2016 
     B||    1||Feb 3, 2016 
     C||    0||Nov 15, 2015 
     D||    1||Dec 4, 2015 

がインストールさ1 =、0 =削除を意味するフラグです。

私はそれがこのように見えるようにしたい

ROW_NUMBER()PIVOTを使用して

Product||   1|| 0 
     A|| Jan 1 2016 || Mar 16, 2016 
     A|| May 152016 || NULL 
     B|| Feb 3 2016 || NULL 
     C||  NULL || Nov 15, 2015 
     D|| DEC 4 ,2015|| NUll 

しかし、最大/最小は私がデータをこのように表示させません使用して...

+0

"using max/min"で目的の結果が得られないクエリを表示します。 – user2864740

答えて

2

、あなたが解決することができます

DECLARE @TABLE TABLE 
( product NVARCHAR(100) 
    ,in_rem tinyint 
    ,[date] date  
) 

INSERT INTO @TABLE 
VALUES ('A',1,'Jan 1, 2016'),('A',0,'Mar 16, 2016'),('A',1,'May 15, 2016'), 
     ('B',1,'Feb 3, 2016'),('C',0,'Nov 15, 2015'),('D',1,'Dec 4, 2015') 

SELECT product,[1],[0] 
FROM ( SELECT * 
        ,ROW_NUMBER() OVER(PARTITION BY in_rem ORDER BY product,[date]) AS [ROW_NO] 
      FROM @TABLE 
     ) AS T 
PIVOT (MIN([date]) FOR in_rem IN ([1],[0]))PVT 
ORDER BY product