我需要在SQL Server中组合两列。但是,我需要优先考虑一列。
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
我需要一张包含所有型号和每辆车的部分的表格。所有模型都在段中的两列中包含段。并且,如果两列中都有一个段,我是否希望模型段覆盖make的段,如保时捷的示例所示。这是我需要的结果:
Make | Model | Segment
--------+------------+--------
Ferarri | California | Sport
Ferarri | F40 | Sport
Porsche | 911 | Sport
Porsche | Cayenne | SUV
BMW | M5 | Sport
我搜索并找到了Rank(),但它似乎没有做我想要的。有什么建议?
提前致谢
答案 0 :(得分:3)
使用coalesce()
。它返回它的第一个非NULL参数:
select, Make, Model, coalesce(Segmentmodel, Segmentmake) as segment
from tablename
答案 1 :(得分:0)
select coalesce([Segment make], [Segment model]) as Segment
答案 2 :(得分:0)
我推荐像
这样的东西select isnull(model,make) as segment
因为那时您将始终选择模型,除非模型为空。在这种情况下,它将选择make。
答案 3 :(得分:0)
尝试:
Select Make,Model,Coalesce([Segment model], [Segment make]) Segment From YourTable