我有一个来自我的脚本SQL的表格,例如:
我需要将此表转换为:
我创建临时表:
CREATE TABLE #Table
(
Data Date,
Max Real,
Min Real,
Avg Real
)
我有一个脚本,当计算我的值时,下一个:
INSERT INTO #Table (Data, Max, Min, Avg) VALUES (@Data, @Max, @Min, @Avg)
我不知道如何将table1
转换为table2
答案 0 :(得分:0)
这称为“转置”数据。
在某些数据库中,PIVOT命令可用于此目的。当它不存在时,例如在MySQL中,可以使用GROUP BY和有时纠结的SQL来完成,如下例所示:
然而,导入脚本中的转置通常要简单得多。
任一选项的关键要求是您的转置表需要固定数量的列;在您提供的示例中,情况并非如此。
另一种可能更适合的方法是将数据保留在数据库中,稍后在使用/查看数据的应用程序中进行转置。
答案 1 :(得分:0)
我很想看到这个问题的更多答案就是我的版本
SELECT 'Data' AS [Data],* FROM (
SELECT DATA FROM #TABLE)A
PIVOT
(
MAX(DATA ) FOR DATA IN ([08:01],[08:02],[08:03],[08:04])
)B
UNION ALL
SELECT 'MAX',CONVERT(VARCHAR,[26]),CONVERT(VARCHAR,[27]),CONVERT(VARCHAR, [28]),CONVERT(VARCHAR,[29]) FROM (
SELECT [MAX] FROM #TABLE)A
PIVOT
(
MAX([MAX]) FOR [MAX] IN ([26],[27],[28],[29])
)B
UNION ALL
SELECT 'MIN',CONVERT(VARCHAR,[20]),CONVERT(VARCHAR,[21]),CONVERT(VARCHAR, [22]),CONVERT(VARCHAR,[23]) FROM (
SELECT [MIN] FROM #TABLE)A
PIVOT
(
MAX([MIN]) FOR [MIN] IN ([20],[21],[22],[23])
)B
UNION ALL
SELECT 'AVG',CONVERT(VARCHAR,[23]),CONVERT(VARCHAR,[24]),CONVERT(VARCHAR, [25]),CONVERT(VARCHAR,[26]) FROM (
SELECT [AVG] FROM #TABLE)A
PIVOT
(
MAX([AVG]) FOR [AVG] IN ([23],[24],[25],[26])
)B
尝试附加图片,但无法做到!