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
答案 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的第一个和最后一个实例。