2016-08-31 1 views
0

war nicht sicher, wie meine Frage zu stellen, aber ich versuche herauszufinden, wie ich eine SQL-Abfrage schreiben würde, die die Tabelle unten replizieren würde.SQL Server-Abfrage: Parse-Eintrag zu Header-Gruppen

Derzeit wird diese Tabelle aus einer Neuformatierung eines Epicor Sales Backlog-Berichts generiert, und ich möchte sie ein wenig rationalisieren und nur eine SQL-Abfrage direkt die gleichen Informationen abrufen.

Spalten A-F Ich habe keine Probleme mit, sie sind nur Felder, die in einer der Kundenauftragstabellen gefunden werden können. Für die Spalten G-K nimmt sie jedoch das Fälligkeitsdatum in F und legt den fälligen Betrag in der Spalte mit dem entsprechenden Monat fest. Spalten GK kann als "Wert der fälligen oder fälligen Bestellfreigaben" betrachtet werden ..

Anstatt den fälligen Betrag in Spalte G zu haben, wird der fällige Betrag in einer der Spalten GK basierend auf dem Monat eingegeben Spalte F. Ein wenig quirky ich denke, aber irgendwelche Ideen, wie dies in einer SQL-Anweisung zu implementieren?

Table output

+0

Wenn ich Sie zu erraten, vielleicht etwas brauchen wie ein Drehpunkt. Jemand erfahrener wäre jedoch viel hilfreicher. – CodyMR

Antwort

0

Ich bin nicht sicher, was Sie wirklich wollen ... aber ich denke, das für hilfreich sein kann, was Sie tun ..

select c.custid Customer, 'your string' [Order /Ln /Rel], od.PartNum,pg.ProdCode ProdGrup,st.TerritoryDesc,oh.OrderDate 
,case when month(oh.OrderDate) = '1' then sum(oh.TotalCharges) end as 'Month 1' 
,case when month(oh.orderDate) = '2' then sum(oh.TotalCharges) end as 'Month 3' 
,case when month(oh.orderDate) = '3' then sum(oh.TotalCharges) end as 'Month 4' 
,case when month(oh.orderDate) = '4' then sum(oh.TotalCharges) end as 'Month 5' 
,case when month(oh.orderDate) = '5' then sum(oh.TotalCharges) end as 'Month 6' 
from Erp.OrderHed oh 
left join Erp.OrderRel orl on orl.Company = oh.Company and orl.OrderNum = oh.OrderNum 
left join Orderdtl od on od.Company = orl.Company and od.OrderNum = orl.OrderNum and od.OrderLine = orl.OrderLine 
left join Erp.Customer c on c.Company = od.Company and c.CustNum = od.CustNum 
left join Erp.Part p on p.Company = orl.Company and p.PartNum = orl.PartNum 
left join Erp.ProdGrup pg on pg.Company = p.Company and pg.ProdCode = p.ProdCode 
left join Erp.SalesTer st on st.Company = c.Company and st.TerritoryID = c.TerritoryID 
group by c.custid, od.PartNum,pg.ProdCode,st.TerritoryDesc,oh.OrderDate 
order by oh.OrderDate 
+0

Ja, das sieht aus wie ein großer Schritt in die richtige Richtung, danke für die Eingabe! Manager entschied, dass er lieber nicht einmal einzigartige Spalten für die monatliche Gruppierung hätte, was mir erspart hätte, die Abfrage zu komplizieren. Danke für Ihre Hilfe, aber Sie haben nach Fallmethoden gesucht und das ist ein großartiges Beispiel. –