Sql server SQL将行透视到列而不进行聚合
我试图找出一个直接的价值轴 我需要将行转换为列,员工有不同的问题存储在行中,我想针对每个员工最多显示3个问题 我看到的大多数例子都包含了一些来自聚合的例子。我正在寻找一个直接的价值轴心。 源表Sql server SQL将行透视到列而不进行聚合,sql-server,Sql Server,我试图找出一个直接的价值轴 我需要将行转换为列,员工有不同的问题存储在行中,我想针对每个员工最多显示3个问题 我看到的大多数例子都包含了一些来自聚合的例子。我正在寻找一个直接的价值轴心。 源表 EMPId Question 121 Should I refer for a desk assessment 121 They have accused me of bullying 121 what services can they be referred for ?
EMPId Question
121 Should I refer for a desk assessment
121 They have accused me of bullying
121 what services can they be referred for ?
121 what services can they be referred for ?
122 They have accused me of bullying
122 what services can they be referred for ?
123 what services can they be referred for ?
期望输出
+----------+------------------------------------------+------------------------------------------+------------------------------------------+
| EMPId | Question1 | Question2 | Question3 |
+----------+------------------------------------------+------------------------------------------+------------------------------------------+
| 121 | Should I refer for a desk assessment | They have accused me of bullying | what services can they be referred for ? |
| 122 | They have accused me of bullying | what services can they be referred for ? | |
| 123 | what services can they be referred for ? | | |
+----------+------------------------------------------+------------------------------------------+------------------------------------------+
您的查询是否如下所示:
Select * from (
Select *, RowN = Concat('Question', dense_rank() over(partition by EmpId order by Question) )
from #questions
) a
pivot (max(Question) for RowN in ([Question1],[Question2],[Question3])) p
如果您的输入是xml,并且需要翻译的xml,则此查询将不起作用
输出如下:
+-------+------------------------------------------+------------------------------------------+------------------------------------------+
| Empid | Question1 | Question2 | Question3 |
+-------+------------------------------------------+------------------------------------------+------------------------------------------+
| 121 | Should I refer for a desk assessment | They have accused me of bullying | what services can they be referred for ? |
| 122 | They have accused me of bullying | what services can they be referred for ? | NULL |
| 123 | what services can they be referred for ? | NULL | NULL |
+-------+------------------------------------------+------------------------------------------+------------------------------------------+
您的查询是否如下所示:
Select * from (
Select *, RowN = Concat('Question', dense_rank() over(partition by EmpId order by Question) )
from #questions
) a
pivot (max(Question) for RowN in ([Question1],[Question2],[Question3])) p
如果您的输入是xml,并且需要翻译的xml,则此查询将不起作用
输出如下:
+-------+------------------------------------------+------------------------------------------+------------------------------------------+
| Empid | Question1 | Question2 | Question3 |
+-------+------------------------------------------+------------------------------------------+------------------------------------------+
| 121 | Should I refer for a desk assessment | They have accused me of bullying | what services can they be referred for ? |
| 122 | They have accused me of bullying | what services can they be referred for ? | NULL |
| 123 | what services can they be referred for ? | NULL | NULL |
+-------+------------------------------------------+------------------------------------------+------------------------------------------+
在此检查SO的表格格式。有趣的。。。这个问题被标记为SQL Server,尽管这个问题似乎是针对HTML的?如果您确实对SQL Server有疑问,您可能希望发布一些t-SQL,显示您试图到达的位置,然后有人可以指导您。@Eli问题是OP不知道如何将表格式化为ascii格式并使用HTML,但也不知道如何使用HTML格式化html@JuanCarlosOropeza同意。虽然我已经看过了这个问题,但OP试图完成的是什么,我的评论是基于这个问题的。检查一下如何格式化表格。有趣的。。。这个问题被标记为SQL Server,尽管这个问题似乎是针对HTML的?如果您确实对SQL Server有疑问,您可能希望发布一些t-SQL,显示您试图到达的位置,然后有人可以指导您。@Eli问题是OP不知道如何将表格式化为ascii格式并使用HTML,但也不知道如何使用HTML格式化html@JuanCarlosOropeza同意。虽然我已经看过了这个问题,但OP试图完成的是什么,这也是我的评论的基础。你只需要包括3个问题,但OP是否重要?解释选择这3个问题的逻辑是什么?你只需要包括3个问题,但OP是否重要?解释选择这3个问题的逻辑是什么。