Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
合并函数在SQL查询中的应用_Sql_Split_Coalesce - Fatal编程技术网

合并函数在SQL查询中的应用

合并函数在SQL查询中的应用,sql,split,coalesce,Sql,Split,Coalesce,我有一个具体要求,其中我有两个表,如下所述:材料详细信息和规范详细信息。我要做的是使用“-”(连字符)拆分Sp_code列值。然后在Material\u Details表中找到Sp\u code的Material\u值 例如: 如果我用“-”拆分“CHA-REZ”,那么我有两个值,“CHA”和“REZ”。现在我必须在Material_Details表中找到CHA的Material_值: 如果CHA的值不存在于Material_Details表的Material_Code列中,则我需要在Mate

我有一个具体要求,其中我有两个表,如下所述:
材料详细信息
规范详细信息
。我要做的是使用“-”(连字符)拆分
Sp_code
列值。然后在
Material\u Details
表中找到
Sp\u code
Material\u值

例如:

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

  • 如果CHA的值不存在于Material_Details表的Material_Code列中,则我需要在Material_Details表的Material_Code列中搜索REZ的值
  • 如果两者都没有找到,我需要将其显示为空白
请参阅下表。任何帮助都将不胜感激

    Material_Details                               Specification_Details    
Material_Code   Material_Value                      Sp_Code     Value
ABC              Ammeter                            CHA-REZ      1
TAB              Table                              PAP-CHA      2
CHA              Chair                              TAB-BBV      3
PAP              Paper                              CNN-ASD      4

使用子查询派生“外键”,然后将
Material\u Detail
表左键连接到子查询上两次,并将
Material\u Detail
表中所需的列合并在一起

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

因此,您选择了
SQL
split
coalesce
标记-您知道需要做什么,您是否正在找人为您编写SQL?