有条件加盟

时间:2019-01-18 16:56:30

标签: sql-server

强调文字我有2张桌子。第一个表具有3列,即SupplierId,SupplierDetailID和EntityID,第二个表具有2列,即SupplierId和SupplierDetailID。在第一个表中,由于一个以上的实体ID,SUPPLIERID和Supplierdetailid的组合不止一个。我想在供应商ID字段上形成左联接,这样,只有当第一个表中的SupplierDetailID为空白时,才应采用最大值该特定SupplierId的第二个表中的SupplierDetailID。 形成的查询将给出first_table.supplierID,如果first_table SupplierDetailID为空,则特定供应商ID,first_table实体ID的第二个表SupplierDetailID的最大值。 enter image description here

1 个答案:

答案 0 :(得分:1)

此SQL查询将为您工作。

SELECT s1.SupplierID,
       ISNULL(s1.SupplierDetailID, MAX(s2.SupplierDetailID)) AS SupplierDetailID
FROM s1
    LEFT JOIN s2
        ON s1.SupplierID = s2.SupplierID
GROUP BY 
         s1.SupplierID,s1.SupplierDetailID;

s1是第一个供应商表。

s2是第二个供应商表。