2013-07-29 4 views
0

Ниже приводится запись в списке: выходSQL сумма с группой по

GROUPNUMBER|COUNTRY|COUNT|AMOUNT 
BD2  |US  |4 |2.00 
BD2  |US  |10 |8.00 
BD2  |CANADA |12 |10.00 
BD5  |UK  |2 |1.00 
BD5  |US  |6 |4.00 
BD5  |UK  |8 |6.00 

Результат необходимо:

GROUPNUMBER|US_COUNT|US_AMOUNT|NON_US_COUNT|NON_US_AMOUNT 
BD2  |14  |10.00 |12   |10.00 
BD5  |6  |4.00  |10   |7.00 

нужно разделить количество и сумму с США и NON_US и группой по полю GroupNumber. Это возможно в MS SQL?

Спасибо, Subs

ответ

1

Должен быть выполним с CASE заявления:

SELECT 
    GROUPNUMBER, 
    SUM(CASE WHEN COUNTRY = 'US' THEN [COUNT] ELSE 0 END) AS US_COUNT, 
    SUM(CASE WHEN COUNTRY = 'US' THEN AMOUNT ELSE 0 END) AS US_AMOUNT, 
    SUM(CASE WHEN COUNTRY != 'US' THEN [COUNT] ELSE 0 END) AS NON_US_COUNT, 
    SUM(CASE WHEN COUNTRY != 'US' THEN AMOUNT ELSE 0 END) AS NON_US_AMOUNT 
FROM theTable 
GROUP BY GROUPNUMBER 

SqlFiddle

+0

вау .. спасибо за ответ ценит это. – user2617053

+0

Последующий вопрос также должен содержать SQL, если значение Country является строчным «us». – user2617053

+0

MS SQL Server по умолчанию не чувствителен к регистру, поэтому он должен работать независимо. Если дело имеет значение, вы можете использовать функцию UPPER(), чтобы заставить корпус – Bort

Смежные вопросы