SQL正在重新格式化表列



我现在有一个表格,它的格式非常不方便
示例:
列:

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,dealer=dealerofrecord。

我想明白了。首先我做了一张新桌子。

CREATE TABLE newtable (ID varchar (5), Q1 int, Q2 int, Q3 int, Q4 int)

然后我插入了不同ID的

INSERT INTO newtable
SELECT DISTINCT ID
FROM oldtable

然后在第一季度,我做了一个插入声明:

UPDATE newtable
SET newtable.Q1 = oldtable.sales
FROM newtable 
INNER JOIN oldtable
ON newtable.ID = oldtable.ID
WHERE oldtable.quarter = '1'

然后,我只是复制并为每个季度执行,在WHERE语句中分别更改为Q2和'2'。

只要确保检查重复项,我的实际数据集就有重复项,因为我使用了与另一列配对的select distinct。

您可以使用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;

相关内容

  • 没有找到相关文章

最新更新