我有这张桌子:
id | type | date
1 | a | 01/1/2012
2 | b | 01/1/2012
3 | b | 01/2/2012
4 | b | 01/3/2012
5 | a | 01/5/2012
6 | b | 01/5/2012
7 | b | 01/9/2012
8 | a | 01/10/2012
POV 是按日期计算的。如果 2 行包含相同的日期,则两者都将在同一行中可见(左连接)。
同一日期最多可以共享 2 行。
所以这种情况不能是:
1 | a | 01/1/2012
2 | b | 01/1/2012
3 | a | 01/1/2012
如果在同一日期有组a
并b
使用左连接在单行中显示它们
如果日期中只有a
组,则将其显示为单行(右侧的 +null )
如果日期中只有 b 组,则将其显示为单行(左侧为 +null )
期望的结果:
Date |typeA|typeB |a'id|b'id
01/1/2012 | a | b | 1 | 2
01/2/2012 | | b | | 3
01/3/2012 | | b | | 4
01/5/2012 | a | b | 5 | 6
01/9/2012 | | b | | 7
01/10/2012 | a | | 8 |
我知道这假设很简单,但这里加入的主要锚点是日期。我遇到的问题是当我阅读第 1 行时,我在表中搜索具有相同日期的所有行......很好。- 没关系。
但是当我阅读第二行时,我也这样做了,它产生了第一行——这已经被计算在内了......
有什么帮助吗?
这是sql小提琴:
https://data.stackexchange.com/stackoverflow/query/edit/82605