2017-07-28 4 views
0

Ich versuche, einen Weg zu finden, alle "Rechnungspositionen" in einer Spalte zurückzugeben, wenn einer von ihnen "Garantiekredit" als "Rechnung" enthält Artikelbeschreibung". Ich habe unten ein Bild gepostet, um es sinnvoller zu machen. Wie Sie unten sehen können, wird die zweite Rechnung angezeigt, obwohl "Warranty Credit" nicht aufgeführt ist. Jede Hilfe wird sehr geschätzt.Geben Sie alle Spalten zurück, wenn eine Zeile in dieser Spalte eine bestimmte Zeichenfolge enthält

enter image description here

WHERE EXISTS 
    (SELECT ARII.Description 
     FROM 
      AR_Customer ARC 
      Inner JOIN AR_Customer_Site   ARCS On ARC.Customer_Id = ARCS.Customer_Id AND ARCS.Customer_Id = ARC.Customer_Id 
      INNER JOIN AR_Customer_System  ARCSYS On ARCS.Customer_Site_Id = ARCSYS.Customer_Site_Id 
      INNER JOIN AR_Branch    ARB  ON ARB.Branch_Id = ARC.Branch_Id 
      INNER JOIN AR_Invoice    ARIN ON ARIN.Customer_Site_Id = ARCS.Customer_Site_Id 
      INNER JOIN AR_Invoice_Item   ARII ON ARII.Invoice_Id = ARIN.Invoice_Id     
     WHERE ARII.[Description] LIKE ('Warranty Credit') OR ARII.[Description] = ('Warranty Credit T')) 
    AND ARIN.Invoice_Date > dateadd(MONTH, -1, getdate()) 
ORDER BY ARIN.Invoice_Number 
+0

In Ihrer Anweisung 'LIKE' würden Sie wahrscheinlich den Platzhalter'% 'verwenden wollen. 'WHERE ARII. [Beschreibung] WIE '% Garantie Credit%'' – Rooben

+0

'WO ARII. [Beschreibung] LIKE ('Garantie-Guthaben')' sollte 'WHERE ARII. [Beschreibung] LIKE ('% Warranty Credit%') sein oder vielleicht, wenn Sie nicht möchten, dass Bedingungen 'WHERE ARII. [Beschreibung] = ('Garantie-Kredit')' – scsimon

+0

Das sind sehr spezifische Ergebnisse, die ich suche. Wie auch immer, es löst nicht das Problem, das ich habe. Trotzdem danke! – snapper

Antwort

1

Ich glaube, Sie sind verwirrend, was Renditen vorhanden ist. Einsatz in für diesen Anwendungsfall:

SELECT DISTINCT 
    ARC.Customer_Number As 'Customer Number', 
    ARC.Customer_Name AS 'Customer Name', 
    ARB.Branch_Code AS 'Site Branch', 
    ARCS.Site_Number As 'Site Number', 
    ARCS.Business_Name AS 'Site Name', 
    ARII.Quantity AS 'Invoice Item Quantity', 
    ARII.Rate AS 'Invoice Item Rate', 
    ARII.Amount AS 'Invoice Item Amount', 
    ARII.Description AS 'Invoice Item Description', 
    SYSY.System_Code AS 'System Code', 
    ARIN.Invoice_Number AS 'Invoice Number', 
    CONVERT(VARCHAR(10), ARIN.Invoice_Date, 10) AS 'Invoice Date', 
    ARCAT.Category_Code AS 'Category', 
    ARIN.Memo AS 'Resolution Notes' 

FROM 
    AR_Customer ARC 
    Inner JOIN AR_Customer_Site   ARCS On ARC.Customer_Id = ARCS.Customer_Id AND ARCS.Customer_Id = ARC.Customer_Id 
    INNER JOIN AR_Customer_System  ARCSYS On ARCS.Customer_Site_Id = ARCSYS.Customer_Site_Id 
    INNER JOIN AR_Branch    ARB  ON ARB.Branch_Id = ARC.Branch_Id 
    INNER JOIN AR_Invoice    ARIN ON ARIN.Customer_Site_Id = ARCS.Customer_Site_Id 
    INNER JOIN AR_Invoice_Item   ARII ON ARII.Invoice_Id = ARIN.Invoice_Id 
    Inner JOIN SY_System    SYSY On ARCSYS.System_Id = SYSY.System_Id 
    INNER JOIN SV_Service_Ticket  SVVT ON ARCSYS.Customer_System_Id = SVVT.Customer_System_Id AND ARII.Service_Ticket_Id = SVVT.Service_Ticket_Id 
    INNER JOIN AR_Customer_Recurring ARCR On ARCSYS.Customer_System_Id = ARCR.Customer_System_Id 
    INNER JOIN AR_Item     ARI  On ARCR.Item_Id = ARI.Item_Id 
    Inner JOIN SS_Item_Type    SSIT On ARI.Item_Type_Id = SSIT.Item_Type_Id 
    INNER JOIN AR_Category    ARCAT ON ARCAT.Category_Id = ARI.Category_Id 

WHERE ARIN.Invoice_Number in 
    (SELECT ARIN.Invoice_Number 
     FROM 
      AR_Customer ARC 
      Inner JOIN AR_Customer_Site   ARCS On ARC.Customer_Id = ARCS.Customer_Id AND ARCS.Customer_Id = ARC.Customer_Id 
      INNER JOIN AR_Customer_System  ARCSYS On ARCS.Customer_Site_Id = ARCSYS.Customer_Site_Id 
      INNER JOIN AR_Branch    ARB  ON ARB.Branch_Id = ARC.Branch_Id 
      INNER JOIN AR_Invoice    ARIN ON ARIN.Customer_Site_Id = ARCS.Customer_Site_Id 
      INNER JOIN AR_Invoice_Item   ARII ON ARII.Invoice_Id = ARIN.Invoice_Id     
     WHERE ARII.[Description] like ('%Warranty Credit%') OR ARII.[Description] = ('Warranty Credit T')) 
    AND ARIN.Invoice_Date > dateadd(MONTH, -1, getdate()) 
ORDER BY ARIN.Invoice_Number 

Alternativ könnten Sie liegt vor, wenn Sie diese Klausel mit einem Prädikat von der äußeren Abfrage korrelieren ... das heißt eine hinzuzufügen where-Klausel die äußere und innere Abfrage zu überprüfen.

SELECT DISTINCT 
    ARC.Customer_Number As 'Customer Number', 
    ARC.Customer_Name AS 'Customer Name', 
    ARB.Branch_Code AS 'Site Branch', 
    ARCS.Site_Number As 'Site Number', 
    ARCS.Business_Name AS 'Site Name', 
    ARII.Quantity AS 'Invoice Item Quantity', 
    ARII.Rate AS 'Invoice Item Rate', 
    ARII.Amount AS 'Invoice Item Amount', 
    ARII.Description AS 'Invoice Item Description', 
    SYSY.System_Code AS 'System Code', 
    ARIN.Invoice_Number AS 'Invoice Number', 
    CONVERT(VARCHAR(10), ARIN.Invoice_Date, 10) AS 'Invoice Date', 
    ARCAT.Category_Code AS 'Category', 
    ARIN.Memo AS 'Resolution Notes' 

FROM 
    AR_Customer ARC 
    Inner JOIN AR_Customer_Site   ARCS On ARC.Customer_Id = ARCS.Customer_Id AND ARCS.Customer_Id = ARC.Customer_Id 
    INNER JOIN AR_Customer_System  ARCSYS On ARCS.Customer_Site_Id = ARCSYS.Customer_Site_Id 
    INNER JOIN AR_Branch    ARB  ON ARB.Branch_Id = ARC.Branch_Id 
    INNER JOIN AR_Invoice    ARIN ON ARIN.Customer_Site_Id = ARCS.Customer_Site_Id 
    INNER JOIN AR_Invoice_Item   ARII ON ARII.Invoice_Id = ARIN.Invoice_Id 
    Inner JOIN SY_System    SYSY On ARCSYS.System_Id = SYSY.System_Id 
    INNER JOIN SV_Service_Ticket  SVVT ON ARCSYS.Customer_System_Id = SVVT.Customer_System_Id AND ARII.Service_Ticket_Id = SVVT.Service_Ticket_Id 
    INNER JOIN AR_Customer_Recurring ARCR On ARCSYS.Customer_System_Id = ARCR.Customer_System_Id 
    INNER JOIN AR_Item     ARI  On ARCR.Item_Id = ARI.Item_Id 
    Inner JOIN SS_Item_Type    SSIT On ARI.Item_Type_Id = SSIT.Item_Type_Id 
    INNER JOIN AR_Category    ARCAT ON ARCAT.Category_Id = ARI.Category_Id 

WHERE ARIN.Invoice_Number in 
    (SELECT ARIN2.Invoice_Number 
     FROM 
      AR_Customer ARC 
      Inner JOIN AR_Customer_Site   ARCS On ARC.Customer_Id = ARCS.Customer_Id AND ARCS.Customer_Id = ARC.Customer_Id 
      INNER JOIN AR_Customer_System  ARCSYS On ARCS.Customer_Site_Id = ARCSYS.Customer_Site_Id 
      INNER JOIN AR_Branch    ARB  ON ARB.Branch_Id = ARC.Branch_Id 
      INNER JOIN AR_Invoice    ARIN2 ON ARIN2.Customer_Site_Id = ARCS.Customer_Site_Id 
      INNER JOIN AR_Invoice_Item   ARII ON ARII.Invoice_Id = ARIN.Invoice_Id     
     WHERE 
      (ARII.[Description] like ('%Warranty Credit%') OR ARII.[Description] = ('Warranty Credit T')) 
      and ARIN2.Invoice_Number = ARIN.Invoice_Number) --notice this part 
    AND ARIN.Invoice_Date > dateadd(MONTH, -1, getdate()) 
ORDER BY ARIN.Invoice_Number 
+0

Das war genau das Problem. Danke für die Hilfe! Arbeitete genau so, wie ich es mir erhofft hatte. – snapper

+0

Kein Problem überhaupt @snapper. Viel Glück, Junge. – scsimon

Verwandte Themen