sql - 将数据格式从行更改为列
问题描述
我有一个以下格式的 SQL 表。每个 ID 在特定日期的表中有 2 个条目。
Input:
ID date rownum subid value1 value2
A 200911 1 X 10 20
A 200911 2 Y 15 25
B 201001 2 S 60 35
B 201001 1 R 40 50
我想编写一个 SQL 查询将其更改为以下格式,以便每个 ID/日期组合只有 1 个条目,如下所示。rownum 已经包含在内,并且应该表示值,以便首先显示 rownnum 1,然后显示第二个 rownum 的值,如下所示。
输出:
ID date row1subid row1value1 row1value2 row2subid row2value1 row2value2
A 200911 X 10 20 Y 15 25
B 201001 R 40 50 S 60 35
如果有不清楚的地方,请告诉我。感谢你的帮助!
解决方案
这是您作为SQL Fiddle需要做的事情。
并供参考:
CREATE TABLE TestData
([ID] varchar(1),
[date] int,
[rownum] int,
[subid] varchar(1),
[value1] int,
[value2] int)
;
INSERT INTO TestData
([ID], [date], [rownum], [subid], [value1], [value2])
VALUES
('A', 200911, 1, 'X', 10, 20),
('A', 200911, 2, 'Y', 15, 25),
('B', 201001, 2, 'S', 60, 35),
('B', 201001, 1, 'R', 40, 50)
;
SELECT A.ID, A.date, A.rownum, A.subid, A.value1, A.value2, B.value1 AS r2value1, B.value2 AS r2value2
FROM TestData AS A
INNER JOIN TestData B ON A.id = B.id AND B.rownum = 2
WHERE A.rownum = 1
推荐阅读
- reactjs - 如何显示用户特定数据?
- python - 使用 python selenium 下载
- ios - 如何在 Swift 4 中的 WKWebView 中加载网页之前删除白屏?
- python - Django自动注销未在数据库中更新
- asterisk - 在接听电话前发送脉冲
- android - 如何通过 Android 中的 AccessibilityService 以编程方式禁用移动设备的最近按钮
- javascript - chart.js 标签颜色根据值变化
- haskell - Haskell 解压折叠
- javascript - 使用 npm 的 request 包,你应该如何传递最初保存在文件中的数据?
- linux-kernel - “kauditd_printk_skb”在linux内核中的作用