2015-09-17 2 views
-2

Привет У меня есть представление, содержащее это:значения группы в поле зрения сервера SQL

sku quantity price discount 
123 4  10  YES 
123 1  10  YES 
123 1  10  NO 

таблица имеет много полей, вот только пример того, что им пытаются добиться того, чтобы группе СКУ по ссылаюсь количество и скидка колонки так он будет выглядеть следующим образом:

sku quantity price discount 
123 5  10  YES 
123 1  10  NO 

так что в этом случае было 5 предметов со скидкой = YES же SKU, но другой один с таким же SKU 123, но количество 1 и скидка = НЕТ, как я могу группа или сумма, чтобы сделать эту работу?

спасибо

+2

что, если цена будет diffrent как 10,20 для YES – wiretext

+3

'Выбрать Артикул, SUM (количество), AVG (цены), скидку от туЬаОго GROUP BY SKU, discount'? –

+0

нет, цена всегда будет одинаковой, потому что они являются одним и тем же предметом с одним и тем же sku, а цена фиксирована – alexistkd

ответ

0

Вы можете использовать оконные функции в зависимости от версии SQL Server:

Создание образца таблицы:

CREATE TABLE mytable (
    sku INT 
    ,quantity INT 
    ,price MONEY 
    ,discount VARCHAR(5) 
    ); 

insert into mytable values 
(123, 4, 10, 'YES'), 
(123, 1, 10, 'YES'), 
(123, 1, 10, 'NO'); 

Запрос:

select distinct sku, 
     sum(quantity) OVER (partition by sku,discount order by sku) as quantity, 
     max(price) OVER (partition by sku,discount order by sku) as price, 
     discount  
from mytable 

Результат:

+-----+----------+-------+----------+ 
| sku | quantity | price | discount | 
+-----+----------+-------+----------+ 
| 123 |  1 | 10 | NO  | 
| 123 |  5 | 10 | YES  | 
+-----+----------+-------+----------+ 

SQL Fiddle Demo