我的问题是:我想编写一个查询(进入一个更大的查询),该查询接受这样的表;
ID | DATE
A | 1
A | 2
A | 3
B | 1
B | 2 等等,并将其转化为;
ID | DATE1 | DATE2
A | 1 | 2
A | 2 | 3
A | 3 | NOW
B | 1 | 2
B | 2 | NOW 其中数字是日期,而NOW()总是附加在最近的日期之后。如果没有限制,我会在Python中这样做,但不幸的是,这是一个更大的查询。我想我们使用的是SyBase的12?我使用SQuirreL SQL与数据库进行交互。
我很困惑。我原以为(SQL query to transform a list of numbers into 2 columns)会有帮助,但恐怕我不知道如何使它发挥作用。我正在考虑对表进行JOIN处理,但是我不知道如何只针对A-1-2行而不是对A-1-3行进行SELECT,也不知道如何将NOW()值插入其中。有人有什么想法吗?
发布于 2013-12-23 20:13:21
我制作了一个sqlfiddle.com来概述您的示例的解决方案。您刚才提到了日期,但是使用了整数,所以我选择了一个整数示例,但是可以修改它。我用postgresql编写了它,以便用nvl()或类似的方法替换coalesce()函数。此外,参数'0‘可以替换为任何值,包括now(),但是必须将表中"i“列的数据类型更改为日期。如果您需要进一步的帮助,请告诉我。
select a.id, a.i, coalesce(min(b.i),'0') from
test a
left join test b on b.id=a.id and a.i<b.i
group by a.id,a.i
order by a.id, a.ihttp://sqlfiddle.com/#!15/f1fba/6
https://stackoverflow.com/questions/20748841
复制相似问题