在SQL Server中使用pivot运算符无法获得所需的结果
我试图透视一个两列的表,但没有得到我想要的结果 以下是Employees表中的数据示例:在SQL Server中使用pivot运算符无法获得所需的结果,sql,json,sql-server,pivot,Sql,Json,Sql Server,Pivot,我试图透视一个两列的表,但没有得到我想要的结果 以下是Employees表中的数据示例: DataPoint Populated name Ram email ram@gmail.com age 23 name Shyam email shyam23@gmail.com age 28 name John email john@gmail.com age 33 name Bob
DataPoint Populated
name Ram
email ram@gmail.com
age 23
name Shyam
email shyam23@gmail.com
age 28
name John
email john@gmail.com
age 33
name Bob
email bob32@gmail.com
age 41
以下是我想要的:
name email age
Ram ram@gmail.com 23
Shyam shyam23@gmail.com 28
John john@gmail.com 33
Bob bob32@gmail.com 41
这是我的密码:
;WITH NeedToPivot AS(
SELECT *
FROM Employees)
SELECT *
FROM NeedToPivot
PIVOT(MAX(Populated) FOR DataPoint IN("name","email","age"))x
以下是它的回报:
name email age
Shyam shyam23@gmail.com 28
根据肖恩·兰格的反馈,我在EmployeeId表中添加了一个EmployeeId列。pivot操作符现在理解了我想要的分组,查询返回的正是我想要的 Employees表现在如下所示:
EmployeeId DataPoint Populated
1 name Ram
1 email ram@gmail.com
1 age 23
2 name Shyam
2 email shyam23@gmail.com
2 age 28
3 name John
3 email john@gmail.com
3 age 33
4 name Bob
4 email bob32@gmail.com
4 age 41
根据肖恩·兰格的反馈,我在EmployeeId表中添加了一个EmployeeId列。pivot操作符现在理解了我想要的分组,查询返回的正是我想要的 Employees表现在如下所示:
EmployeeId DataPoint Populated
1 name Ram
1 email ram@gmail.com
1 age 23
2 name Shyam
2 email shyam23@gmail.com
2 age 28
3 name John
3 email john@gmail.com
3 age 33
4 name Bob
4 email bob32@gmail.com
4 age 41
您的数据中是否有某些内容可以指示给定行所属的“组”。你的代码运行正常,只是没有达到你想要的效果。你是否有一个员工ID,可以将电子邮件、姓名和年龄分组在一起?非常有用的输入,因为我刚刚使用pivot操作符。pivot操作符需要知道如何对数据进行分组是有意义的。是的,通常您会使用MAX(表示组的列)。您的数据中是否有某些内容指示给定行属于哪个“组”。你的代码运行正常,只是没有达到你想要的效果。你是否有一个员工ID,可以将电子邮件、姓名和年龄分组在一起?非常有用的输入,因为我刚刚使用pivot操作符。pivot操作符需要知道如何对数据进行分组,这是有意义的。是的,通常您会使用MAX(表示组的列)。