我们怎样才能将2个不同的列集合在sql server中的2列中

时间:2015-05-19 15:19:13

标签: sql sql-server sql-server-2008

我有一个源表,如下所示

enter image description here

现在我的要求是如何将列引言和Rapport转换为其中一列,将Introduction Notes和Rapport Notes转移到其他列。我的目标表应如下所示

enter image description here

我使用了交叉申请,但我无法在目标表中显示列问题,该列有一组列名(引言和Rapport)。

任何人都可以知道如何在sql中实现这一点

提前致谢

2 个答案:

答案 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/找到