首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将2列SQL表转换为3列,列3滞后于2

将2列SQL表转换为3列,列3滞后于2
EN

Stack Overflow用户
提问于 2013-12-23 18:04:59
回答 1查看 143关注 0票数 1

我的问题是:我想编写一个查询(进入一个更大的查询),该查询接受这样的表;

代码语言:javascript
复制
ID | DATE  
A  | 1  
A  | 2  
A  | 3  
B  | 1  
B  | 2  

等等,并将其转化为;

代码语言:javascript
复制
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()值插入其中。有人有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-23 20:13:21

我制作了一个sqlfiddle.com来概述您的示例的解决方案。您刚才提到了日期,但是使用了整数,所以我选择了一个整数示例,但是可以修改它。我用postgresql编写了它,以便用nvl()或类似的方法替换coalesce()函数。此外,参数'0‘可以替换为任何值,包括now(),但是必须将表中"i“列的数据类型更改为日期。如果您需要进一步的帮助,请告诉我。

代码语言:javascript
复制
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

http://sqlfiddle.com/#!15/f1fba/6

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20748841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档