2016-12-29 46 views
1

我有一个数据库表中,看起来像这样:SQL Server 2008中,枢轴没有骨料机能的研究

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 =。

我想使它看起来像这样:

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

显示查询使用“使用最大/最小”不会导致所需的结果。 – user2864740

回答

2

使用PIVOTROW_NUMBER(),就可以解决这,

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