【发布时间】:2012-11-03 02:45:31
【问题描述】:
我正在寻找有关 SQL 查询的一些帮助。 (我正在使用 Oracle。)
我有一个查询是 2 个不同的选择语句的联合。生成的数据如下所示:
Col1 Col2 Col3
XXX ValA Val1
XXX ValB Val2
YYY ValA Val1
YYY ValA Val2
在此设置中,Col1 = XXX 是默认值,Col1 = YYY 是实际值。实际值 (YYY) 应优先于默认值。实际值通过第 2 列和第 3 列定义。
我希望将这些结果缩减为以下内容:
Col1 Col2 Col3
XXX ValB Val2
YYY ValA Val1
YYY ValA Val2
请注意,第一行已被删除...这是因为有一个实际值(第 3 行中的 YYY)优先于默认值 (XXX)。
关于如何解决这个问题的任何想法?
【问题讨论】:
-
完全不清楚是什么让 YYY 成为“真实值”而 XXX 成为“默认值”。如果没有某种方法来区分哪个是首选,您将很难做到这一点。
-
YYY 只是我通过另一个查询知道的真实姓名的占位符。 XXX 是默认值的设置字符串值。我已经解决了这个问题。谢谢。
-
每对 Col2、Col3 是否只有一个 YYY 值,还是可能不止一个?
-
只有 1 个 YYY 值(可能没有,在这种情况下将使用 XXX 值)
-
@typhoid:你错过了我评论的重点。如果我们不知道 XXX 是常数,则无法解决此问题,您的方案中没有说明。知道它是一个常数后,我们就可以直接对其进行测试(您会注意到所有答案都是如此)。