PostgreSQL的:查询从同桌
问题描述:
我有一个表:PostgreSQL的:查询从同桌
id1 | date | idreff |
A11 | 2015-01-01| A11
B12 | 2016-02-03| A11
C53 | 2016-05-26| A11
ID1有一个IDreff。我想从日期提取两种年龄: 1.交易本身的年龄 2.基于IDreff的第一笔交易的年龄。
所以,我想这样的结果:
id1 | date | idreff | Age of Transaction | Age IDreff
A11 | 2015-01-01| A11
B12 | 2016-02-03| A11
C53 | 2016-05-26| A11
我如何得到的结果两种查询(交易ID1和IDreff岁)在相同的查询?
我试着用这样的:
SELECT *, age(t1.date) AS age1, age(t2.date) FROM table t1, table t2 WHERE t1.idreff=t2.id1
但是因为给我翻倍每一行的结果是不正确的。
答
您可以修改这样的SQL:
SELECT
t1.*, age(t1.date) AS age1, age(t1.date, t2.date)
FROM
table t1, table t2
WHERE
t1.idreff=t2.id1
答
你应该写更精确的加入:
SELECT
*,
age(t1.date) AS age1,
age(COALESCE(t2.date,t1.date)) as base_age
FROM
table t1
LEFT JOIN table t2 ON (t1.idreff=t2.id1 AND t1.id1<>t2.id1)
WHERE 1 = 1
该查询给我相同的结果,我以前的查询。有双重结果。 – bandungeuy
哦,对不起,我不明白。你能展示一些结果的例子吗? @bandungeuy –