这是我的问题:我想写一个查询(进入一个更大的查询),它采用这样的表格;
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的SQL Anywhere 12吗?我使用SQuirreL SQL与数据库进行交互。
我很难过。我认为(SQL query to transform a list of numbers into 2 columns)会有所帮助,但我恐怕我不知道它是否有效。我在考虑JOIN
表格本身,但我不知道如何SELECT
仅针对A-1-2
行而不是A-1-3
行,实例,或如何将NOW()
值插入其中。有没有人有任何想法?
答案 0 :(得分:0)
我创建了一个sqlfiddle.com来概述您的示例的解决方案。你提到日期,但使用整数,所以我选择做一个整数的例子,但它可以修改。我在postgresql中写了它,所以coalesce()函数可以用nvl()或类似的代替。此外,参数“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.i