我有一个包含信息的TableA,如下:
TIME DATA VALUE
------------- ------ ------
120520142546 Title Mr
120520142546 Name Smith
120520142546 Smoke Yes
180303140429 Title Ms
180303140429 Name Lea
180303140429 Smoke No
我正在尝试获取一个TableB(已经创建,只想插入值),其中具有相同时间值的数据显示在同一行中,如此(并且还将'Yes'转换为1和'否'由0):
ID Title Name Smoke
--- ----- ----- -----
1 Mr Smith 1
2 Ms Lea 0
我有点明白它可以用PIVOT的东西,但我找不到一个我会理解的简单教程。
答案 0 :(得分:2)
试试这个:
CREATE TABLE TableB (
Id int NOT NULL AUTO_INCREMENT,
Title varchar(255) NOT NULL,
Name varchar(255) NOT NULL,
Smoke tinyint(255) NOT NULL,
PRIMARY KEY (Id)
);
INSERT INTO TableB (Title, Name, Smoke)
SELECT t1.value AS title, t2.value AS name, (t3.value = 'Yes') AS smoke
FROM TableA t1
JOIN TableA t2 ON t1.time = t2.time
JOIN TableA t3 ON t1.time = t3.time
WHERE t1.data = 'Title' AND t2.data = 'Name' AND t3.data = 'Smoke';
这假设所有三个属性始终可用于每个时间戳,并且不存在任何时间戳的重复条目。