我有一个源表,如下所示
现在我的要求是如何将列引言和Rapport转换为其中一列,将Introduction Notes和Rapport Notes转移到其他列。我的目标表应如下所示
我使用了交叉申请,但我无法在目标表中显示列问题,该列有一组列名(引言和Rapport)。
任何人都可以知道如何在sql中实现这一点
提前致谢
答案 0 :(得分:1)
SELECT A.Id
, B.Question
, B.ResponseRating
, B.Response
FROM (VALUES -- Dummy Data
(1, 3, 1, 'Completed', 'Assigned')
, (2, 5, 5, 'Assigned', 'Completed')
, (3, 4, 2, 'Completed', 'InProgress')
, (4, 3, 3, 'InProgress', 'Changed')
) A (Id, Introduction, Rapport, IntroductionNotes, RapportNotes)
CROSS APPLY (VALUES -- Unpivot
('Introduction', A.Introduction, A.IntroductionNotes)
, ('Rapport', A.Rapport, A.RapportNotes)
) B (Question, ResponseRating, Response)
ORDER BY A.Id;
答案 1 :(得分:0)
您可以查看UNPIVOT
功能。
你会在http://www.sqlservercentral.com/articles/Stairway+Series/125504/找到一个很好的指南(有一个嵌套的UNPIVOT的例子),另一个在http://www.mssqltips.com/sqlservertip/3000/use-sql-servers-unpivot-operator-to-help-normalize-output/找到