【发布时间】:2017-01-13 12:04:11
【问题描述】:
我使用的是 sql server 2014,我有一个这样的表 (##tt_allresults)
ID | Area | Event |
1 | FB1 | Dev_Chg, Old Value: 0, New Value: 50, Workstation: Blah1, Function: Blah1 func |
1 | FB2 | Dev_Chg, Old Value: 99, New Value: 5, Workstation: Blah2, Function: Blah2 func |
1 | FB1 | Dev_Chg, Old Value: 50, New Value: 55, Workstation: Blah1, Function: Blah1 func |
我想从这样的表中(预期输出)
Area | Old Value | New Value | Function |
FB1 | 0 | 50 | Blah1 func |
FB2 | 99 | 5 | Blah2 func |
FB1 | 50 | 55 | Blah1 func |
这是我迄今为止尝试过的
Declare @id int
WHILE EXISTS(SELECT * FROM ##tt_allresults)
BEGIN
Select Top 1 @id = Id from ##tt_allresults
-- Do the work --
Declare @area nvarchar(100)
set @area = (Select Area from ##tt_allresults where id = @id)
Insert into ##tt_changedetails
select @area, * from fnsplit((Select [event] from ##tt_allresults where id = @id),',')
-- Scrap the ID and Move On --
Delete ##tt_allresults where ID = @id
END
select * from ##tt_changedetails
我得到以下结果
Area | ChangeDetails |
FB1 | Dev_Chg |
FB1 | Old value :0 |
FB1 | New Value :50 |
FB1 | Workstation :blah1 |
FB1 | Function :blah1 func |
FB2 | Dev_Chg |
FB2 | Old value :99 |
FB2 | New Value :5 |
FB2 | Workstation :blah2 |
FB2 | Function :blah2 func |
FB1 | Dev_Chg |
FB1 | Old value :50 |
FB1 | New Value :55 |
FB1 | Workstation :blah1 |
FB1 | Function :blah1 func |
如何拆分我的初始表并根据拆分对其进行旋转。我想看看下面的结果
FB1 | 0 | 50 | Blah1 func |
FB2 | 99 | 5 | Blah2 func |
FB1 | 50 | 55 | Blah1 func |
【问题讨论】:
-
@Chanukya - 我已经更新了这个问题。如果您还有任何问题,请随时提问。
-
你想要的结果是什么?
-
@iamdave - 我的问题中的预期输出表。
-
@iamdave - 如有任何问题,请随时提问。
-
首先,得到你得到的结果,然后根据“:”进行另一个拆分;然后分别为旧值、新值、工作站执行三个枢轴,并将它们连接在一起(或者您可以在第二部分使用 CASE)。对此已有很多答案。
标签: sql sql-server pivot sql-server-2014