У меня есть таблица со следующими строками данных.Сравнение строк с другими строками в одной таблице SQL Server
EngID Tower Billing Amt
100 ICS Y 5000
100 EDT Y 7777
100 ICS N 2000
, и я хочу, чтобы результирующий набор быть консолидированы Tower & Eng ID и количество положить в соответствующую колонку (Фактурная или не Фактурная) на основе критериев биллинг. Итак, ниже, как конечный набор результатов следует искать выше таблицы:
EngID Tower Inv Amt (Amt when Billing = Y) Non-Invoiced Amt (Billing=N)
100 ICS 5000 2000
100 EDT 7777
я смог получить 1-ую строку результирующего набора, используя приведенный ниже запрос:
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)
Однако , пытаясь получить результат второй строки. Мой план состоит в том, чтобы получить две строки через два отдельных запроса, а затем сделать объединение, чтобы объединить результаты.
Что это 'gdf.dbo' означает? –
Это соглашение об именах с тремя разделами, используемое в SQL Server. –