Я работаю над запросом, который должен вернуть набор данных, который будет использоваться отчетом.Предположим, у меня есть таблица dbo.payments
с данными, как показано ниже:
-----------------------------------------------
Customer |Commission| Trade Date | Trade Type |
-----------------------------------------------
AMIRALIS | 20.00 | 22/01/2018 | SALE |
BRUSSASH | 30.00 | 22/01/2018 | PURCHASE |
AMIRALIS | 10.00 | 22/01/2018 | SALE |
AKBMOBIL | 50.00 | 22/01/2018 | PURCHASE |
AMIRALIS | 10.00 | 23/01/2018 | PURCHASE |
BRUSSASH | 10.00 | 23/01/2018 | PURCHASE |
BRUSSASH | 30.00 | 23/01/2018 | SALE |
BRUSSASH | 10.00 | 23/01/2018 | PURCHASE |
AMIRALIS | 60.00 | 24/01/2018 | PURCHASE |
BRUSSASH | 10.00 | 24/01/2018 | SALE |
Сценарий # 1: Я хочу написать запрос, который даст мне результаты, как показано ниже.Пожалуйста, обратите внимание, что процентное соотношение не соответствует SUM(Commission)
всех времен 240.00
независимо от предложения where.
-----------------------------------------------------
Customer |Total Commission| Trade Date |%Commission |
-----------------------------------------------------
AMIRALIS | 30.00 | 22/01/2018 | 0.125 |
BRUSSASH | 30.00 | 22/01/2018 | 0.125 |
AKBMOBIL | 50.00 | 22/01/2018 | 0.208 |
AMIRALIS | 10.00 | 23/01/2018 | 0.041 |
BRUSSASH | 50.00 | 23/01/2018 | 0.208 |
AMIRALIS | 60.00 | 24/01/2018 | 0.250 |
BRUSSASH | 10.00 | 24/01/2018 | 0.041 |
Я новичок в SQL, самое дальнее, на что я мог пойти:.
SELECT [TRADE DATE] AS DATE, CUSTOMER, SUM([COMMISSION]) AS TOTAL, ([COMMISSION] / (SELECT SUM([COMMISSION]) FROM DBO.PAYMENTS)) AS '%COMMISSION' FROM DBO.PAYMENTS GROUP BY [TRADE DATE], CUSTOMER, COMMISSION
Как мне достичь желаемого результата, независимо от условия WHERE: то есть WHERE [Trade Date] BETWEEN '21/01/2018' AND '24/01/2018'
, который уменьшает общее количество до 170.00