重新格式化 SQL 输出

杯子

我有看起来像这样的数据

Name  XX YY
alpha 10 77
beta  10 90
alpha 20 72
beta  20 91
alpha 30 75
beta  30 94
alpha 40 76
beta  40 95

如果我使用

select * from scores order by Name, XX

我会得到

Name  XX YY
alpha 10 77
alpha 20 72
alpha 30 75
alpha 40 76
beta  10 90
beta  20 91
beta  30 94
beta  40 95

目前,我正在以这种形式检索数据并使用一些 C 编码对其进行格式化

Name   xx=10  xx=20  xx=30  xx=40
alpha  77     72     75     76
beta   90     91     94     95

假设每个名称总是有 10、20、30、40 的条目,这在 SQL 中是可能的,而无需像SQL 重新格式化表列那样创建新表

拉巴尼

您需要使用 PIVOT 来获得所需的结果。在使用 PIVOT 之前,需要对 XX 列中的值进行一些自定义,以便最终的列输出可以满足您的期望。

SELECT * FROM
(
SELECT Name,'XX='+CAST(XX AS VARCHAR) XX,YY 
FROM your_table
)AS P
PIVOT(
    SUM(YY)
    FOR XX IN ([XX=10],[XX=20],[XX=30],[XX=40])
) PP

输出-

Name    XX=10   XX=20   XX=30   XX=40
alpha   77      72      75      76
beta    90      91      94      95

使用以下查询也可以实现相同的输出 -

SELECT Name,
[10] AS [XX=10],
[20] AS [XX=20],
[30] AS [XX=30],
[40] AS [XX=40]
FROM
(
    SELECT Name, XX,YY 
    FROM your_table
)AS P
PIVOT(
    SUM(YY)
    FOR XX IN ([10],[20],[30],[40])
) PP

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章