Ich habe eine Tabelle mit den folgenden Datenzeilen.Vergleichen von Zeilen mit anderen Zeilen in einer einzelnen SQL Server-Tabelle
EngID Tower Billing Amt
100 ICS Y 5000
100 EDT Y 7777
100 ICS N 2000
und ich möchte das Ergebnis gesetzt von Tower & Eng ID und die Menge in der entsprechenden Spalte (Fakturierte oder nicht fakturiert) setzen konsolidiert werden basierend auf Abrechnungskriterien. Also, unten ist, wie das Endergebnis Satz für die obige Tabelle aussehen sollte:
EngID Tower Inv Amt (Amt when Billing = Y) Non-Invoiced Amt (Billing=N)
100 ICS 5000 2000
100 EDT 7777
Ich bin in der Lage, die erste Zeile des Ergebnisses unter Verwendung der folgenden Abfrage gesetzt zu bekommen:
Select Temp1.Tower, Temp1. EngID, Temp2.InvoiceAmt as [Inv Amt], Temp1.InvoiceAmt AS [Non-Invoiced Amt] from
(
SELECT EngID, TOWER,BILLING, InvoiceAmt,RANK() OVER (PARTITION BY EngID, TOWER ORDER BY BILLING) AS RNK
FROM [GDF].[dbo].[Sample] ) Temp1 INNER JOIN (SELECT EngID, TOWER,Billing,InvoiceAmt, RANK() OVER (PARTITION BY EngID, TOWER ORDER BY BILLING) AS RNK
FROM [GDF].[dbo].[Sample]) Temp2 ON
Temp1.EngID = Temp2.EngID
AND (Temp1.Tower = Temp2.Tower AND Temp1.Billing < Temp2.Billing)
jedoch , kämpfen, um das Ergebnis der zweiten Reihe zu erhalten. Mein Plan ist, die zwei Reihen durch zwei getrennte Fragen zu bekommen und dann eine Vereinigung zu machen, um die Resultate zu kombinieren.
Was ist das 'gdf.dbo' bedeuten? –
Dies ist eine Namenskonvention mit drei Teilen, die in SQL Server verwendet wird. –