在SQL Query中使用coalesce函数

时间:2013-09-23 13:09:02

标签: sql split coalesce

我有一个特定的要求,我有两个表,如下所述:Material DetailsSpecification Details。我要做的是使用“ - ”(连字符)拆分Sp_Code列值。然后在Material_Value表格中找到Sp_Code的{​​{1}}。

例如:

如果我使用“ - ”拆分“CHA-REZ”,那么我有两个值,“CHA”和“REZ”。现在我必须在Material_Details表中找到CHA的Material_Value:

  • 如果在Material_Details表的Material_Code列中没有CHA的值,那么我需要在Material_Details表的Material_Code列中搜索REZ的值。
  • 如果两者都未找到,我需要将其显示为空白。

请参阅下表以供参考。任何帮助将不胜感激。

Material_Details

1 个答案:

答案 0 :(得分:1)

使用子查询派生'外键',然后LEFT JOINMaterial_Detail表导入子查询两次,COALESCE导出Material_Detail表<所需的列/ p>

SELECT *, COALESCE(md1.Material_Value, md2.Material_Value, '') Material_Value
FROM (
    SELECT *,
        SUBSTRING(Sp_Code, 1, CHARINDEX('-', Sp_Code, 1)-1) FK1,
        SUBSTRING(Sp_Code, CHARINDEX('-', Sp_Code, 1)+1, LEN(Sp_Code)-1) FK2
    FROM Specification_Details
) spec
LEFT JOIN Material_Details md1 ON spec.FK1 = md1.Material_Code
LEFT JOIN Material_Details md2 ON spec.FK2 = md2.Material_Code