SQL Server 2008中,枢轴没有骨料机能的研究
问题描述:
我有一个数据库表中,看起来像这样: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
但使用最大值/最小值不会让我显示的数据这样...
答
使用PIVOT
与ROW_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
显示查询使用“使用最大/最小”不会导致所需的结果。 – user2864740