我不知道如何获得正确的脚本
要获取参考代码详细信息,其中一个表"car_col"必须填写其他第二个表"car_cat"的非重复结果,如果"car_col"没有,则填写"car_cat"
select
a. customer_id ,
a. car_code ,
b. description as code_desc ,
a. price
from product a
left join (select * from reference_codes where domain in ('car_col', 'car_cat') ) b
on a. car_code = b. code
输出结果;
| 客户ID|电码|描述|
| - ------|- ------|- ------|
| 一百二十三|十二|蓝色|
| 一百二十三|二十三|黑色|
| 三四五|四十五|红色|
| 三四五|四十五|红色|
| 六百七十八|六十七|绿色|
| 六百七十八|二十四|黄色|
| 九零八|四十五|红色|
| 九零八|七十|紫色|
如您所见,客户345有两行代码45为红色
以下参考表;
从参考代码中选择 *,其中域='car_col'
| 领域|代码|描述|
| - ------|- ------|- ------|
| 车列|十二|蓝色|
| 车列|二十三|黑色|
| 车列|四十五|红色|
| 车列|六十七|绿色|
从参考代码中选择 *,其中域='car_cat'
| 领域|代码|描述|
| - ------|- ------|- ------|
| 汽车类别|二十四|黄色|
| 汽车类别|四十五|红色|
| 汽车类别|七十|紫色|
| 汽车类别|九十|行|
我要输出结果
| 客户ID|电码|描述|
| - ------|- ------|- ------|
| 一百二十三|十二|蓝色|
| 一百二十三|二十三|黑色|
| 三四五|四十五|红色|
| 六百七十八|六十七|绿色|
| 六百七十八|二十四|黄色|
| 九零八|四十五|红色|
| 九零八|七十|紫色|
我正在使用ORACLE SQL
谢谢
2条答案
按热度按时间qoefvg9y1#
很难给予一个具体的答案,真正看到所有的数据或模型,但我解释你的要求:
利用您现有的代码,我们可以添加一个列来“区分”数据的优先级,例如
disho6za2#
如果示例数据如下所示:
...那么您的查询结果将如上所示。虽然选择了PRICE列,但我们无法看到您的问题中的值。
要得到你预期的结果(如果没有不同的价格),你可以只添加DISTINCT关键字,以获得你想要的:
......如果价格不同,您可以使用按以下方式分组的聚合
即使缺少'car_col',您的查询也可以通过DISTINCT或聚合进行调整(取决于PRICE):