【发布时间】:2014-02-25 10:14:43
【问题描述】:
我的目标是制作动态的线条组(实际上是按类型和颜色划分的产品)
我不知道是否可以仅使用一个选择查询。
但是:我想根据 number_per_group 列创建一组行(A PRODUCT 是 TYPE 和 COLOR),并且我想根据日期顺序(Order By DATE)进行此分组
NB_PER_GROUP 编号为 2 的单个产品从最终结果中排除。
Table :
-----------------------------------------------
NUM | TYPE | COLOR | NB_PER_GROUP | DATE
-----------------------------------------------
0 | 1 | 1 | 2 | ...
1 | 1 | 1 | 2 |
2 | 1 | 2 | 2 |
3 | 1 | 2 | 2 |
4 | 1 | 1 | 2 |
5 | 1 | 1 | 2 |
6 | 4 | 1 | 3 |
7 | 1 | 1 | 2 |
8 | 4 | 1 | 3 |
9 | 4 | 1 | 3 |
10 | 5 | 1 | 2 |
Results :
------------------------
GROUP_NUMBER | NUM |
------------------------
0 | 0 |
0 | 1 |
~~~~~~~~~~~~~~~~~~~~~~~~
1 | 2 |
1 | 3 |
~~~~~~~~~~~~~~~~~~~~~~~~
2 | 4 |
2 | 5 |
~~~~~~~~~~~~~~~~~~~~~~~~
3 | 6 |
3 | 8 |
3 | 9 |
如果你有其他方法可以解决这个问题,我会接受的。
【问题讨论】:
-
GROUP = 0和GROUP = 2有什么区别? -
第 2 组是产品的第 2 组 (1,1)。同一产品有多个组:第 0 组:第 1 组 (1,1),第 2 组:第 2 组 (1,1)。
-
这看起来像是您应该在应用程序层中执行的操作,使用
ORDER BY遍历查询结果。 SQL 查询的结果是一个 relation,而您想要的输出根本不像是关系。 -
所以我们同意,仅使用 SQL 查询是不可能有这个结果的。 (没有 PL/SQL)
标签: sql postgresql