SQL Server:通过第一个非空左联接进行排序

问题描述

我有一个car表。并且car与具有优先级服务有关系,可以对其进行修复。

我拥有可以car提供服务的服务层次。

  1. 这可能是与汽车直接相关的服务
  2. 可以是位于汽车所在城市的服务
  3. 这可以是位于汽车所在国家的服务
  4. 它可以是认服务。

而且我需要根据服务的层次结构来订购汽车。

例如,我有car表,例如:

ID  Name
-----------
1   Toyota
2   Tesla
3   Ford

direct_service表:

CAR_ID  NAME       PRIORITY
---------------------------
1       B_SERVICE  0
1       C_SERVICE  1

location_service表(位置优先级表示城市(0)比国家(1)更重要):

CAR_ID  NAME                  LOCATION_PRIORITY  PRIORITY
---------------------------------------------------------
1       TOYOATA_CITY_SERVICE  0                  0
2       B_SERVICE             0                  0
2       TESLA_CITY_SERVICE    0                  1
2       A_SERVICE             1                  0

default_service表:

CAR_ID  NAME       PRIORITY
---------------------------
3       A_SERVICE  0
3       B_SERVICE  1

我想编写和sql脚本,它将通过其服务选择所有汽车订单。 由于存在表值的示例,我希望在脚本执行后查看下一个结果:

ID  Name
-----------
3   Ford
1   Toyota
2   Tesla

我想下这样的订单,因为:

  • 福特拥有下一个服务阵列:A_SERVICE,B_SERVICE(来自default_service,福特没有任何直接服务或定位服务)
  • 丰田具有下一个服务数组:B_SERVICE,C_SERVICE(由于服务层次结构,未考虑来自direct_service的其他服务)
  • 特斯拉拥有下一个服务阵列:B_SERVICE,TESLA_CITY_SERVICE(来自location_service,国家/地区服务未考虑在内,因为城市更重要)

请帮助我为该订单任务构建sql脚本

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...