gpt4 book ai didi

sql表透视或转换

转载 作者:行者123 更新时间:2023-12-04 23:47:14 25 4
gpt4 key购买 nike

我有如下的数据表

User Year  Points  Value
A 1997 1 10
A 1997 2 30
A 1997 3 40
A 1999 1 70
B 1993 1 7
B 1993 3 4
C 2001 1 10
.....

我希望表格这样转换:

User   Year  Points1  Points2  Points3 ....
A 1997 10 30 40
A 1999 70 null null
B 1993 7 null 4
C 2001 10 null null
......

Points 的范围在编译时是未知的,所以它不仅仅是从 1 到 3。这几乎就像将点作为新表中的列标题一样。我想 SQL PIVOT 是一个不错的选择,但我没有运气使用它。我正在使用 SQL 2008。

最佳答案

既然您提到了 SQL PIVOT,我猜您使用的是 SQL Server 2005 或更高版本或 Oracle 11g

SQL 2005

SELECT [user], year, [1] as Point1, [2] as Point2, [3] as Point3 
FROM
(

SELECT [user], year , points, Value
FROM table ) AS SourceTable
PIVOT
(
SUM(Value)
FOR Points IN ([1], [2], [3])
) AS PivotTable
ORDER BY [user]

请参阅此处的工作示例 data.se query

甲骨文 11g

如果您使用的是 Oracle 11g,它将是这样的(不确定字段别名)

SELECT *
FROM (
SELECT user, year , points, Value
FROM table )
PIVOT (SUM(Value) AS sum_value FOR (Points ) IN ('1' as Point1 ,
'2' as Point2,
'3' as Point3))
Order by User;

关于sql表透视或转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9120559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com