将行转置为列sql

时间:2013-02-22 09:48:26

标签: sql

Date        Ref     Number
20/02/2013  980717  20503
20/02/2013  980717  20506
20/02/2013  980717  20580
20/02/2013  980717  20582
21/02/2013  981783  20500
21/02/2013  981783  20567
21/02/2013  981783  20571
21/02/2013  981783  20577
21/02/2013  981783  20580
22/02/2013  982182  20500
23/02/2013  982856  20580
23/02/2013  982856  20500
24/02/2013  994244  20502
24/02/2013  994244  20501
24/02/2013  994244  20507

有人可以帮我改变它吗

Date        Ref     Number  Number  Number  Number  Number
20/02/2013  980717  20503   20506   20580   20582       
21/02/2013  981783  20500   20567   20571   20577   20580   
22/02/2013  982182  20500                   
23/02/2013  982856  20580   20500               
24/02/2013  994244  20502   20501   20507

没有。 'number'字段的列应该是动态的,具体取决于为唯一'ref'找到的行

我还需要能够将日期设置为标准

1 个答案:

答案 0 :(得分:0)

我假设您正在使用MYSQL。

如果是这样,我认为您应该尝试GROUP_CONCAT。 它将显示所有找到的数字的一个日期。并且通过不同的方式,您可以找到重复数据删除的数字。

SELECT Date, Ref, GROUP_CONCAT(DISTINCT NUMBER SEPARATOR ";") as Numbers
FROM ...
WHERE ...
GROUP BY Date, Ref

它不会在不同列中显示不同的数字“数字”。 但是,您可以在“;”分隔符上展开“Numbers”列。

注:

如果您使用它,您可能必须将您的号码转换为char才能在phpmyadmin中正确显示它们。否则,它可能只在phpmyadmin中显示“BLOB”。