SQL запрос для суммирования столбцов 2 таблицы на основе столбца, данные которого отличаются - PullRequest
0 голосов
/ 14 мая 2018

после того, как я приложил немало усилий для создания sql-запроса, я оказался в беспорядке. До сих пор я работал над таблицей1

select bill_no='2016-2017', B_id, COALESCE(sum(amount-gr),0) as amount, COALESCE (sum(tax),0) as tax, COALESCE(sum(amount_paid),0) as amount_paid, COALESCE(sum(gr),0) as gr,'sun4269' as forUser from tbl_addbill 
 where forUser='sun4269' and bill_date between '2016-04-01' and '2017-03-31' group by B_id;

bill_no     B_id     amount tax   amount_paid   gr  forUser
2016-2017   B-1       34875 0       0           0    sun4269
2016-2017   L-1       21014 0     19363         0    sun4269
2016-2017   P-1       10217 0       0           0    sun4269
2016-2017   S-1       30000 0    14000          0    sun4269
2016-2017   T-1       66237 0    21426          0    sun4269

и с таблицей 2

select bill_no,B_id,amount,tax,amount_paid,gr,forUser from tbl_addbill where forUser='sun4269' and bill_date is null and bill_no='2015-2016'       

bill_no     B_id    amount  tax    amount_paid  gr  forUser
2015-2016   K-1     181523  0      22159        0   sun4269
2015-2016   L-1     25266   0      4644         0   sun4269
2015-2016   P-1     122383  0      122383   113162  sun4269
2015-2016   A-1     38367   1827   0            0   sun4269
2015-2016   S-1     698262  18575  577120   113449  sun4269

видно, что столбец 'B_id' в таблице1 и в таблице2 имеет одинаковые и разные значения (L-1 повторяется, но B-1 нет), что я хочу, если L-1повторяется в таблицах, затем сумма, сумма_плата, налог, сумма суммы суммируются с «2016-2017» из обеих таблиц, и если B-1 уникален в любой из таблиц, то он также должен быть там со значением «2016-2017'

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Не знаете точно, что вы ищете, но поможет ли здесь какое-то условное агрегирование?

 select..., sum(case when bill_date between '2016-04-01' and '2017-03-31'then amount-gr else null end) [2016billdata], 
 sum(case when bill_date between '2015-04-01' and '2016-03-31'then amount-gr else null end) [2015billdata]....from tbl_addbill
 group by...
0 голосов
/ 14 мая 2018

UNION ваши запросы table1 и table2, а также выполнение GROUP BY и связанных с ними агрегатных функций для таблицы UNION 'd.

Если вы начнете с UNION таблиц1 и таблиц2, вы поймете, что я имею в виду, потому что результатом будет одна таблица со всеми строками из таблиц1 и таблиц2; затем вы можете добавить GROUP BY B_id и нужные функции агрегирования (например, SUM()).

...