【发布时间】:2011-11-23 20:31:35
【问题描述】:
我正在为一个查询而苦苦挣扎,我已经被困了好几天了,根本不知道这是否可能。
我有如下结果集:
ID ;CASE;LINE;QTY;ORDER;CODE
1446;2725; 1; 1;33333;A
1446;2724; 1; 1;33333;A
0430;2545; 1; 2;44444;B
0430;2547; 1; 2;44444;B
9628;2710; 1; 1;55555;C
9628;2708; 1; 1;55555;C
9628;2708; 2; 1;66666;
9628;2710; 2; 1;66666;
9628;2710; 3; 1;55555;C
9628;2708; 3; 1;55555;C
从这些行中,我想得到这些:
1446;2725; 1; 1;33333;A
1446;2724; 1; 1;33333;A
0430;2545; 1; 2;44444;B
0430;2547; 1; 2;44444;B
9628;2710; 1; 1;55555;C
9628;2708; 3; 1;55555;C
或者:
1446;2725; 1; 1;33333;A
1446;2724; 1; 1;33333;A
0430;2545; 1; 2;44444;B
0430;2547; 1; 2;44444;B
9628;2708; 1; 1;55555;C
9628;2710; 3; 1;55555;C
,即,我想过滤掉 CODE null 的那些(我可以这样做)并想用行匹配大小写(这是我遇到问题的地方)。
问题是我与歧视没有任何关系。 CASE 2708 与 LINE 3 或 1 匹配无关紧要,但 CASE 2710 需要与不同的 LINE 匹配。
这在 Java 或 C++ 等语言中非常容易,但由于我无法声明变量或列表,我不知道如何将 LINE 标记为选中。
我也不能使用存储过程。我开始认为是不可能完成的,但也许有人可以放一点光。
提前致谢!
【问题讨论】:
-
对不起,但我不明白“CASE 2710 需要与不同的 LINE 匹配”是什么意思。 2710 与第 1 行、第 2 行和第 3 行相关联,您希望它带回 1 或 3 而不是带回 2?为什么??
-
将其翻译为:我只想要
(case, line)的唯一组合是否公平? -
@Julien,我不想与 2 匹配,因为 CODE 为空。我希望 2708 与 1 或 3 匹配,而 2710 与其他可能性匹配。
-
@ErwinBrandstetter,不确定。最初我有四个独特的组合,不是吗? [(2710,1), (2710,3), (2708,1), (2708,3)] 我需要想出 [(2710,1), (2708,3)] 或 [(2710, 3), (2708,1)]
标签: sql postgresql group-by