我现在有一张桌子,格式非常不方便。
例:
列:
Quarter / ID / Sales
1 / 234 / 50
1 / 258 / 100
2 / 234 / 50
2 / 456 / 125
3 / 258 / 100
3 / 456 / 75
3 / 555 / 100
4 / 555 / 50
这只是一个例子,实际上有5600列。
我想重新格式化表格,以便我刚刚展示的示例看起来更像:
ID / Q1 / Q2 / Q3 / Q4
234/ 50 / 50 / 0 / 0
258/ 100 / 0 / 100 / 0
456/ 0 / 125 / 75 / 0
555/ 0 / 0 / 100 / 50
有没有办法让我轻松移动这些列,可能是基于对ID号的某种查找?我只需要一个记录中每个ID的所有数据都有不同的列,而不是4个记录,每个季度一个。
由于
---到目前为止,我所做的只是创建一个具有不同ID的新表。然后我想使用某种连接或查找插入,可以将所有记录放入Q1,其中quarter = 1,经销商=记录经销商。
答案 0 :(得分:0)
好吧我明白了。首先我做了一张新桌子。
CREATE TABLE newtable (ID varchar (5), Q1 int, Q2 int, Q3 int, Q4 int)
然后我插入了不同的ID
INSERT INTO newtable
SELECT DISTINCT ID
FROM oldtable
然后对于Q1,我做了一个插入声明:
UPDATE newtable
SET newtable.Q1 = oldtable.sales
FROM newtable
INNER JOIN oldtable
ON newtable.ID = oldtable.ID
WHERE oldtable.quarter = '1'
然后我复制并为每个季度做了一次,改为Q2,然后在WHERE语句中分别为'2'。
只要确保检查重复项,我的实际数据集就有重复项,因为我使用的是select distinct与另一列配对。
答案 1 :(得分:0)
您可以使用 MySQL CASE 语句。
Select id,
max(case when Quarter=1 then sales else null end) Q1,
max(case when Quarter=2 then sales else null end) Q2,
max(case when Quarter=3 then sales else null end) Q3,
max(case when Quarter=4 then sales else null end) Q4
from your_table_name
group by id;