У меня есть приложение для отчета о расходах, которое собирает расходы и номера счетов в одну таблицу, но данные расходы могут быть разделены на некоторые части, относящиеся к одному счету GL, а остальные - к другому счету.Для учета разделения затрат таблица расходов содержит две пары столбцов суммы и номера счета, которые используются в процессе ввода данных.Например:
create table Expenses (expheaderid int, explineid int, amount_split1 decimal(5,2),
account int, amount_split2 decimal(5,2), account2 int);
insert Expenses values (57, 11, 47.35, 80400, 0, 0);
insert Expenses values (57, 12, 163.31, 80440, 0, 0);
insert Expenses values (57, 13, 30, 80401, 5.90, 70410);
insert Expenses values (57, 14, 35, 80440, 0, 0);
insert Expenses values (57, 15, 45.15, 80440, 0, 0);
insert Expenses values (57, 16, 145.87, 80400, 68.14, 80400);
insert Expenses values (57, 17, 67.35, 80870, 0, 0);
insert Expenses values (57, 18, 105, 80402, 34.50, 80440);
Мне нужно свернуть (GROUP BY) суммы из одних и тех же кодов счетов, но сворачивание должно происходить между обеими парами сумм и столбцами номеров счетов - либо (amount_split1 & account) 1-я пара или (amount_split2 & account 2) 2-я пара столбцов.Итак, моя таблица выглядит следующим образом:
expheaderid explineid amount_split1 account amount_split2 account2
----------- --------- ------------- ------- ------------- --------
57 11 47.35 80400 0.00 0
57 12 163.31 80440 0.00 0
57 13 30.00 80401 5.90 70410
57 14 35.00 80440 0.00 0
57 15 45.15 80440 0.00 0
57 16 145.87 80400 68.14 80400
57 17 67.35 80870 0 0
57 18 105.00 80402 34.50 80440
Я хочу объединить расходы на сумму_плит1 с затратами на сумму_Плит2, группируя их по номеру счета.
Результат должен выглядеть следующим образом, получая данные из учетных записей GLи в столбце account, и в account2
AggTotal GLAccount
-------- ---------
261.36 80400
30.00 80401
105.00 80402
277.96 80440
67.35 80470
and probably...
0.00 0 -which I don't care about.
Я не очень хорош в составных запросах.Я пытаюсь UNION и GROUP в одном утверждении, как это:
select sum(AggTotal), GLAccount from
((select amount_split1 as AggTotal, account as GLAccount from Expenses)
union all
(select amount_split2 as AggTotal, account2 as GLAccount from Expenses))as t
where Expenses.expheaderid=57 group by GLAccount;
Но столбец expheaderid не будет связываться.Эти данные являются частью большого набора данных, поэтому предложение WHERE для expheaderid должно работать.
Спасибо за любую помощь.