合并 SQL 查询:获取采购订单信息和对应过账日期

本文介绍如何将两个 SQL 查询语句合并,以获取采购订单信息和其对应的过账日期。第一个 SQL 用于获取采购订单的基本信息,第二个 SQL 用于获取过账日期,最终将两个 SQL 查询结果合并到一个查询结果中。

第一个 SQL:

SELECT 
    opoh.PurchaseOrder AS purchaseorder, 
    opoh.PurchaseOrderType AS purchaseordertype, 
    opoh.Supplier AS supplier, 
    opoh.PurchasingOrganization AS purchasingorganization, 
    opoh.PurchasingGroup AS purchasinggroup, 
    opoh.CompanyCode AS companycode, 
    opoh.PaymentTerms AS paymentterms, 
    opoh.ZZ1_PosttingDate_PDH AS create_time, 
    opoh.ZZ1_PosttingDate_PDH AS zZ1PosttingDatePDH, 
    opoh.ZZ1_PosttingDate_PDH AS posttingdate, 
    opoh.DocumentCurrency AS documentCurrency, 
    os.BusinessPartnerName AS supplierName, 
    opoh.zz1bedatpdhpdh AS zz1bedatpdhpdh  
FROM 
    ods_purchase_order_header opoh 
LEFT JOIN 
    ods_supplier os ON os.Supplier = opoh.Supplier  
WHERE 
    opoh.PurchaseOrderType = 'Z012';

第二个 SQL:

SELECT 
    omh.PostingDate  
FROM 
    ods_materialdocument_head omh 
LEFT JOIN 
    ods_materialdocument_item omi ON omh.MaterialDocument = omi.MaterialDocument  
    AND omh.MaterialDocumentYear = omi.MaterialDocumentYear 
LEFT JOIN 
    vmi_materialdocument vmi ON omi.MaterialDocument != vmi.MaterialDocument  
    AND omi.MaterialDocumentYear != vmi.MaterialDocumentYear  
WHERE 
    ( omi.IsAutomaticallyCreated != 'X' OR omi.IsAutomaticallyCreated IS NULL )  
    AND omi.PurchaseOrder IN (  ${purchaseOrders} )  
    AND omi.GoodsMovementType IN ( SELECT gmt.GoodsMovementType FROM goodsmovement gmt )  
LIMIT 0,1;

第二个 SQL 中的 ${purchaseOrders} 等于第一个 SQL 中的 opoh.PurchaseOrder

合并后的 SQL 查询语句如下:

SELECT 
    opoh.PurchaseOrder AS purchaseorder, 
    opoh.PurchaseOrderType AS purchaseordertype, 
    opoh.Supplier AS supplier, 
    opoh.PurchasingOrganization AS purchasingorganization, 
    opoh.PurchasingGroup AS purchasinggroup, 
    opoh.CompanyCode AS companycode, 
    opoh.PaymentTerms AS paymentterms, 
    opoh.ZZ1_PosttingDate_PDH AS create_time, 
    opoh.ZZ1_PosttingDate_PDH AS zZ1PosttingDatePDH, 
    opoh.ZZ1_PosttingDate_PDH AS posttingdate, 
    opoh.DocumentCurrency AS documentCurrency, 
    os.BusinessPartnerName AS supplierName, 
    opoh.zz1bedatpdhpdh AS zz1bedatpdhpdh, 
    omh.PostingDate AS PostingDate 
FROM 
    ods_purchase_order_header opoh 
LEFT JOIN 
    ods_supplier os ON os.Supplier = opoh.Supplier  
LEFT JOIN 
    ods_materialdocument_item omi ON omi.PurchaseOrder = opoh.PurchaseOrder 
LEFT JOIN 
    ods_materialdocument_head omh ON omh.MaterialDocument = omi.MaterialDocument 
        AND omh.MaterialDocumentYear = omi.MaterialDocumentYear 
LEFT JOIN 
    vmi_materialdocument vmi ON omi.MaterialDocument != vmi.MaterialDocument 
        AND omi.MaterialDocumentYear != vmi.MaterialDocumentYear 
WHERE 
    opoh.PurchaseOrderType = 'Z012' 
    AND (omi.IsAutomaticallyCreated != 'X' OR omi.IsAutomaticallyCreated IS NULL) 
    AND omi.GoodsMovementType IN (SELECT gmt.GoodsMovementType FROM goodsmovement gmt) 
LIMIT 0,1;

在合并后的查询语句中,第二个 SQL 查询结果的 omh.PostingDate 被添加到了第一个 SQL 查询结果中。同时,使用了适当的连接条件将两个查询语句联合起来,确保结果行数与第一个 SQL 查询结果一致。


原文地址: http://www.cveoy.top/t/topic/pDqj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录