У меня есть запрос, который выглядит так:
SELECT OrganizationName, OrganizationID, ReceivableStatus, InvoiceFee
FROM v_InvoicesFreelanceOutstanding
ORDER BY OrganizationID
Данные из этого могут выглядеть следующим образом:
OrganizationName OrganizationID ReceivableStatus InvoiceFee
-----------------------------------------------------------------------------
Company A 139 60-90 days 672.00
Company A 139 60-90 days 1800.00
Company A 139 over 90 days 1440.00
Company B 264 Current 3559.38
Company B 264 60-90 days 3785.50
Company C 271 60-90 days 446.25
Company C 271 over 90 days 637.50
Company C 271 over 90 days 1126.25
То, что я хочу в конечном итоге отобразить, выглядит примерно так (для данных выше):
Company Current 30-60 days 60-90 days over 90 days Total
-----------------------------------------------------------------------------
Company A 0 0 2472.00 0 2472.00
Company B 3559.38 0 3785.50 0 7344.88
Company C 0 0 446.25 1763.75 2210.00
Моего SQL-фу недостаточно, чтобы пройти через это:
SELECT
MAX(OrganizationName) as OrganizationName,
OrganizationID,
ReceivableStatus,
SUM(InvoiceFee) as TotalDue
FROM v_InvoicesFreelanceOutstanding
GROUP BY OrganizationID, ReceivableStatus
Что показывает что-то вроде этого (опять же из данных выше):
OrganizationName OrganizationID ReceivableStatus TotalDue
-----------------------------------------------------------------------------
Company A 139 60-90 days 2472.00
Company A 139 over 90 days 1440.00
Company B 264 Current 3559.38
Company B 264 60-90 days 3785.50
Company C 271 60-90 days 446.25
Company C 271 over 90 days 1763.75
Что тогда? Любая помощь будет оценена.
Обратите внимание, что состояния, показанные во 2-й таблице (Current
, 30-60 days
, 60-90 days
, over 90 days
) - единственные, которые я ожидаю поднять под ReceivableStatus
.
РЕДАКТИРОВАТЬ : Извините, что не включил это. Мне известно о PIVOT
, но я не мог заставить его делать то, что я хочу.