0

我一直在尝试精简此查询,以便每个供应商 ID 获得一行并汇出我

-- Insert statements for procedure here
SELECT DISTINCT
mast.VENDOR AS VendorID,
mast.VENDOR_VNAME AS VendorName, 
addr.LOCATION_CODE AS 'Remit ID',   
mast.TAX_ID AS TIN, 
addr.ADDR1 AS Address1, 
addr.ADDR2 AS Address2, 
addr.CITY_ADDR5 AS City, 
addr.STATE_PROV AS St, 
addr.COUNTRY AS Country, 
addr.POSTAL_CODE AS Zip, 
count(inv.TRAN_TOT_TXBL) AS InvoiceCT,
SUM(inv.TRAN_TOT_TXBL) AS InvoiceAMT,
COUNT(inv.TRAN_PAID_AMT) AS PaymentCT,
SUM(inv.TRAN_PAID_AMT) AS PaymentAmt,
inv.CASH_CODE AS PaymentMethod,
inv.TERMS_CD AS PayTerm,    
'' AS POCt, 
'' AS DPO,
'' AS SourceSystem, 
contact.PHONE_NMBR AS 'Phone Number', 
contact.E_MAIL_ADDRESS AS 'E-mail', 
contact.FAX_NMBR AS 'Fax Number'

FROM APINVOICE inv
INNER JOIN APVENMAST mast ON mast.VENDOR = inv.VENDOR AND mast.VENDOR_GROUP =     inv.VENDOR_GROUP AND mast.VENDOR_STATUS ='A'
INNER JOIN APVENADDR addr ON addr.VENDOR = mast.VENDOR AND (addr.CUR_ADDR='Y' AND addr.VENDOR_GROUP = mast.VENDOR_GROUP)
INNER JOIN APCONTACT contact ON contact.VENDOR = mast.VENDOR AND contact.VENDOR_GROUP = mast.VENDOR_GROUP
WHERE inv.INVOICE_DTE BETWEEN '1/1/2012' AND '12/31/2013' AND (inv.VENDOR_GROUP = '2' OR inv.VENDOR_GROUP = '35')
GROUP BY mast.VENDOR,mast.VENDOR_VNAME,mast.TAX_ID,addr.ADDR1,addr.CITY_ADDR5,addr.STATE_PROV,addr.C  OUNTRY,addr.POSTAL_CODE,addr.ADDR2,contact.PHONE_NMBR,contact.E_MAIL_ADDRESS,contact.FAX_NMBR,addr.LOCATION_CODE,inv.TERMS_CD,inv.CASH_CODE
ORDER BY mast.VENDOR,mast.VENDOR_VNAME,mast.TAX_ID,addr.ADDR1,addr.CITY_ADDR5,addr.STATE_PROV,addr.COUNTRY,addr.POSTAL_CODE,addr.ADDR2,contact.PHONE_NMBR,contact.E_MAIL_ADDRESS,contact.FAX_NMBR,addr.LOCATION_CODE,inv.TERMS_CD,inv.CASH_CODE

我得到的结果像

   VendorID VendorName  RemitID TIN Address1    Address2    City    St  Country Zip InvoiceCT   InvoiceAMT  PaymentCT   PaymentAmt  PaymentMethod   PayTerm POCt    DPO SourceSystem    PhoneNumber E-mail  FaxNumber
    3   20 Company 1 INC                    123456789            EAST STREET                                            WEST SIDE           NY                                  14787       9   0.00    9   30409.39    371                                                                                                                        
    3   20 Company 1 INC                    123456789            EAST STREET                                            WEST SIDE           NY                                  14787       7   0.00    7   10128.22    371     PNOW        

填充的列是VendorID, VendorName, Tin, Address1, City, St, Zip InvoiceCT, InvoiceAmt, PaymentCT,PaymentAmtPay Term

此示例中的其他所有内容均为空白

结果是给出了我需要的数字和所有内容,但我需要将两行合并为 1 行,并且每行的数字应该彼此相加以给我一个更大的总和。

我迷路了!

4

2 回答 2

1

两行因 TERMS_CD 不同,一为 PNOW,另一行为空白,因为您在该字段上进行分组,所以将返回两行。如果你取那个字段的 MIN/MAX,你会得到你想要的一行。

您必须决定在您的情况下哪些字段有助于产生不同的价值。

于 2013-06-18T20:46:12.397 回答
1

您有两行,因为它们在 PayTerm 列中具有不同的值

PayTerm   blank / PNOW

将此列包含为某种聚合而不是原始列,例如 max(PayTerm) 或将其从查询中完全排除。

于 2013-06-18T20:49:17.977 回答