2014-01-16 42 views
-1

我正在将数据从旧数据库传输到新数据库。在旧的数据库格式永乐这样使用sql server 2008 r2将行重新排列成列?

enter code here

我需要更改这个像这样

enter image description here

谁能告诉我怎么解决这个....,

+0

是条形码和流程在所有行中唯一的组合吗? – Segfault

+3

也许[这](http://technet.microsoft.com/en-us/library/ms177410%28v=sql.105%29.aspx)会给你一个提示.. – Nico

+0

@Nico你能简单解释一下 – Pallavi

回答

1

您可以使用Pivot语句来做到这一点,正如评论所暗示的那样,但在我看来,使用连接更直接。两次将同一个表加入自己,然后将结果集中的表从三次中选择。如果你的进程是一致的这三个那么我建议这样的:

SELECT a.barcode, a.process as First, a.volume as FirstVolume, 
     b.process as Second, b.volume as Second Volume, 
     c.process as Third, c.volume as ThirdVolume 
FROM Volumes a 
LEFT JOIN Volumes b on b.barcode = a.barcode and b.process = 'BC' 
LEFT JOIN Volumes c on c.barcode = a.barcode and c.process = 'FPC' 
WHERE a.process = 'PUC'; 

这使得假定总有一个过程市局...

如果你不知道什么样的价值观可能会在这个过程中柱,我们可以做这样的:

SELECT a.barcode, a.process as First, a.volume as FirstVolume, 
     b.process as Second, b.volume as Second Volume, 
     c.process as Third, c.volume as ThirdVolume 
FROM Volumes a 
LEFT JOIN Volumes b on b.barcode = a.barcode and b.process <> a.process 
LEFT JOIN Volumes c on c.barcode = a.barcode and c.process <> a.process and c.process <> b.process; 

这不作任何保证第一进程列各行上虽然相同,只有你得到三个不同的流程,每行每一个条形码。

+0

它工作正常......谢谢 – Pallavi

相关问题