Sql 根据优先级从两列中选择
我需要合并SQL Server中的两列。但是,我需要给一列优先级Sql 根据优先级从两列中选择,sql,sql-server,select,Sql,Sql Server,Select,我需要合并SQL Server中的两列。但是,我需要给一列优先级 Make | Model | Segment make | Segment model --------+------------+--------------+-------------- Ferarri | California | Sport | Null Ferarri | F40 | Sport | Null Porsche | 911 | Sp
Make | Model | Segment make | Segment model
--------+------------+--------------+--------------
Ferarri | California | Sport | Null
Ferarri | F40 | Sport | Null
Porsche | 911 | Sport | Null
Porsche | Cayenne | Sport | SUV
BMW | M5 | Null | Sport
我需要一张桌子,上面有所有车型和每辆车的部分。所有模型的线段都位于带有线段的两列中的一列中。而且,如果两列中都有一个段,我是否希望模型的段替代品牌的段,如Porsche的示例所示。这就是我需要的结果:
Make | Model | Segment
--------+------------+--------
Ferarri | California | Sport
Ferarri | F40 | Sport
Porsche | 911 | Sport
Porsche | Cayenne | SUV
BMW | M5 | Sport
我已经搜索并找到了Rank(),但它似乎没有达到我想要的效果。有什么建议吗
提前感谢使用coalesce()
。它返回它的第一个非空参数:
select, Make, Model, coalesce(Segmentmodel, Segmentmake) as segment
from tablename
使用coalesce()
。它返回它的第一个非空参数:
select, Make, Model, coalesce(Segmentmodel, Segmentmake) as segment
from tablename
我会推荐类似的东西
select isnull(model,make) as segment
因为这样您将始终选择模型,除非模型为空。在这种情况下,它将选择make。我将重新编译如下内容
select isnull(model,make) as segment
因为这样您将始终选择模型,除非模型为空。在这种情况下,它将选择品牌。尝试:
Select Make,Model,Coalesce([Segment model], [Segment make]) Segment From YourTable
试试看:
Select Make,Model,Coalesce([Segment model], [Segment make]) Segment From YourTable