两行数据合并为一行

时间:2014-09-10 01:15:37

标签: mysql sql

SQL中的初学者,但有机会创建自己的数据库。

所以我有一张表Invoice,其中包含类似的参考编号,但状态代码编号不同。

表发票:

Reference     Status Code     Status Date
  10198053           300       08/07/2013 
  10198053           500       08/09/2013 

我希望输出显示:

表发票:

Reference     Status Code    Status Date     Status Date 2
  10198053           300       08/07/2013      08/09/2013

代码:

select reference r, status Code s, status Date,
case 
     when r=r and s=s (???)
from Table Invoice

2 个答案:

答案 0 :(得分:2)

假设您需要查看300的日期和500的日期,您可以根据每个Status_Code聚合两列:

SELECT 
  Reference,
  MIN(CASE WHEN Status_Code = '300' THEN Status_Date ELSE NULL END) AS Status_Date_300,
  MIN(CASE WHEN Status_Code = '500' THEN Status_Date ELSE NULL END) AS Status_Date_500
FROM Invoice
GROUP BY Reference;

正如评论中所指出的,这可能会根据您要查找的具体要求而改变 - 但是,这应该可以让您开始。

SQL Fiddle来测试上述内容。

答案 1 :(得分:-1)

<强> EDITED 试试这个:

SELECT Invoice.reference, MIN(Invoice.statusCode) AS statusCode, MIN(Invoice.statusDate) AS statusDate, MAX(Invoice.statusDate) AS statusDate2
FROM Invoice
GROUP BY Invoice.reference;

GroupBy您的参考号码,以便在您的查询中获取它的一个实例。然后使用MIN和MAX函数在特定引用上获取statusDate的第一个和最后一个实例。