Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
NovichekStudent Member Откуда: Архангельск Сообщений: 11 |
Всем привет. Есть 2 таблицы Данные платежей(атрибуты-idcontract,amount, внешний ключ-iddoctype(fk)) и тип документа(атрибут iddoctype) Нужно вывести id contract и сумму платежей по каждому типу документа(агрегация по контракту) Я делаю так select idcontract,sum(Amount) from table1 t1, table2 t2 where iddoctype=1 and t1.iddoctype=t2.iddoctype group by idcontract inner join on idcontract select idcontract,sum(Amount) from table1 t1, table2 t2 where iddoctype=2 and t1.iddoctype=t2.iddoctype group by idcontract inner join on idcontract select idcontract,sum(Amount) from table1 t1, table2 t2 where iddoctype=3 and t1.iddoctype=t2.iddoctype group by idcontract И так далее Можно как нибудь сделать проще? Просто к примеру мне нужны будут данные из других таблиц( Например время, или период), то придется много гемороиться. Спасибо |
1 окт 13, 10:06 [14904979] Ответить | Цитировать Сообщить модератору |
саша_ювелир
Guest |
NovichekStudent, может я тебя неправильно понял, но по моему так: declare @plateg table (idcontract int , amount int , iddoctype int) declare @typedoc table (iddoctype int) SELECT p.idcontract, t.iddoctype, sum(amount) FROM @plateg as p LEFT JOIN @typedoc as t on p.iddoctype = t.iddoctype group by p.idcontract, t.iddoctype |
1 окт 13, 10:14 [14905015] Ответить | Цитировать Сообщить модератору |
NovichekStudent Member Откуда: Архангельск Сообщений: 11 |
саша_ювелир, спасибо, выглядит логично(так как суммы агрегируются по контракту и по типу типу документа), но как быть если я хочу присвоить название каждому столбцу) Например сумма поставки, сумма заказа, сумма оплаты и так далее |
1 окт 13, 10:20 [14905043] Ответить | Цитировать Сообщить модератору |
AnyKey45 Member Откуда: Ekaterinburg-Moscow-EU Сообщений: 219 |
Данные платежей(атрибуты-idcontract,amount, внешний ключ-iddoctype(fk)) а если без джойна?, фк же есть уже в первой таблице |
1 окт 13, 10:20 [14905045] Ответить | Цитировать Сообщить модератору |
саша_ювелир
Guest |
AnyKey45, только в том случае, если таблица типов документа является просто справочником, а не отображает наличие документов в реальности. |
1 окт 13, 10:24 [14905066] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Взять и присвоить не пробовали ? |
||
1 окт 13, 10:27 [14905082] Ответить | Цитировать Сообщить модератору |
NovichekStudent Member Откуда: Архангельск Сообщений: 11 |
саша_ювелир, А можете ответить на мой вопрос? |
1 окт 13, 10:27 [14905083] Ответить | Цитировать Сообщить модератору |
саша_ювелир
Guest |
NovichekStudent, тогда, мне кажется, лучше добавить условие CASE. Т.е. case when iddoctype = 1 then 'платежи x' when iddoctype = 2 then 'платежи y'. а вообще лучше б в таблице с типом документа хранить название этого типа и выводить его вместе с айдишником |
1 окт 13, 10:28 [14905089] Ответить | Цитировать Сообщить модератору |
NovichekStudent Member Откуда: Архангельск Сообщений: 11 |
саша_ювелир, Спасибо, разобрался |
1 окт 13, 10:40 [14905174] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |