таблица с продажами и количеством продуктов - добавьте столбец, в котором указаны продукты - PullRequest
0 голосов
/ 26 февраля 2020

у меня есть эта таблица: my table

я хочу добавить column: count - чтобы я мог видеть для каждого продукта, сколько было продаж, например:

enter image description here

я пытаюсь так:

update #t
set quantity = (select count(*) from #t group by product)

это не хорошо, потому что возвращает больше 1 значения

Ответы [ 3 ]

1 голос
/ 26 февраля 2020

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

sum(quantity)  over (partition by product)

Или вы можете соотнести свой подзапрос:

update t1
       set t1.quantity = (select sum(t.quantity) 
                          from #t as t  
                          where t.product = t1.product
                         )
from #t t1;
0 голосов
/ 26 февраля 2020

Использовать оконные функции:

update #t
    set quantity = new_quantity
    from (select t.*, count(*) over (partition by product) as new_quantity
          from #t t
         ) t;

Вероятно, вам следует делать это, когда вы создаете временную таблицу, но вы также можете обновить значение и после этого.

0 голосов
/ 26 февраля 2020

Используйте оконные функции:

select
    t.*,
    sum(quantity) over(partition by product) cnt
from mytable t

Как предлагает jarlh, лучше, чем обновление, создать представление, поэтому вам не нужно беспокоиться о сохранении целостности производного столбца:

create view myview
select
    t.*,
    sum(quantity) over(partition by product) cnt
from mytable t
...