Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Pазница(вычитание) между столбцами / 6 сообщений из 6, страница 1 из 1
13.10.2021, 11:15
    #40104032
Caxa_ASS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pазница(вычитание) между столбцами
Всем привет.

Мне необходимо получить разницу между ценами путем вычитанием цен, если значение в столбце -> 'rank' = 2 тогда минус цена, где значение в столбце -> 'rank' = 1 для каждого товара, и записать отдельным столбцом.

Пробую это сделать через when then, но не понимаю как это 'прикрутить' для каждого товара и его цен.
Буду благодарен за помощь.

Код: sql
1.
2.
3.
4.
5.
select name, price,  [rank],
case
     when [rank] = 2 then price - (select price from Products where [rank] = 1 and name = ' ' ) --??
end as price_2
from Products



Пример таблицы
[img=]
...
Рейтинг: 0 / 0
13.10.2021, 11:17
    #40104035
Caxa_ASS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pазница(вычитание) между столбцами
Caxa_ASS,

[img=]
...
Рейтинг: 0 / 0
13.10.2021, 11:32
    #40104053
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pазница(вычитание) между столбцами
Caxa_ASS, примерно как-то так

Код: sql
1.
2.
3.
4.
select t1.[name], t1.[price],  t1.[rank],
t1.[price] - ISNULL(t2.[price],0)  price_2
from Products t1 left join
from Products t2 ON t1.[name] = t.2.[name] AND t1.[rank] = 2 AND t2.[rank] = 1
...
Рейтинг: 0 / 0
13.10.2021, 11:45
    #40104059
Caxa_ASS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pазница(вычитание) между столбцами
SQL2008
Caxa_ASS, примерно как-то так

Код: sql
1.
2.
3.
4.
select t1.[name], t1.[price],  t1.[rank],
t1.[price] - ISNULL(t2.[price],0)  price_2
from Products t1 left join
from Products t2 ON t1.[name] = t.2.[name] AND t1.[rank] = 2 AND t2.[rank] = 1



спасибо большое!!!, единственное лишний from перед Products t2
...
Рейтинг: 0 / 0
13.10.2021, 12:08
    #40104070
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pазница(вычитание) между столбцами
Caxa_ASS
SQL2008
Caxa_ASS, примерно как-то так

Код: sql
1.
2.
3.
4.
select t1.[name], t1.[price],  t1.[rank],
t1.[price] - ISNULL(t2.[price],0)  price_2
from Products t1 left join
from Products t2 ON t1.[name] = t.2.[name] AND t1.[rank] = 2 AND t2.[rank] = 1



спасибо большое!!!, единственное лишний from перед Products t2


у вас может быть другой диалект SQL установлен
...
Рейтинг: 0 / 0
13.10.2021, 16:43
    #40104174
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pазница(вычитание) между столбцами
Caxa_ASS
SQL2008
Caxa_ASS, примерно как-то так

Код: sql
1.
2.
3.
4.
select t1.[name], t1.[price],  t1.[rank],
t1.[price] - ISNULL(t2.[price],0)  price_2
from Products t1 left join
from Products t2 ON t1.[name] = t.2.[name] AND t1.[rank] = 2 AND t2.[rank] = 1



спасибо большое!!!, единственное лишний from перед Products t2


Лучше используйте LAG(price) OVER (PARTITION BY name ORDER BY Rank)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Pазница(вычитание) между столбцами / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]