powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с написанием запроса
10 сообщений из 10, страница 1 из 1
Помогите с написанием запроса
    #40052250
andgorb5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
• Требуется отобрать периоды в которых значение Value отличается от значения Value в предыдущем периоде. Выводимые поля: ID, Value. В примере выше должны быть выведены значения 1, 5, 7, 9
• Требуется удалить из таблицы периоды в которых значение Value равно
значению Value в предыдущем периоде. Выводимые поля: ID, Value. В
примере выше должны быть удалены значения 3, 6, 10
...
Рейтинг: 0 / 0
Помогите с написанием запроса
    #40052258
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие варианты вы попробовали уже?
...
Рейтинг: 0 / 0
Помогите с написанием запроса
    #40052267
andgorb5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин,

думал с использованием двух таблиц, и сравнения их, но как мне кажется есть вариант сделать это как-то проще
...
Рейтинг: 0 / 0
Помогите с написанием запроса
    #40053111
osipen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andgorb5,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare @t as table ( id    int
,                     value int )

insert into @t
values ( 1,  10 )
,      ( 3,  10 )
,      ( 5,  20 )
,      ( 6,  20 )
,      ( 7,  30 )
,      ( 9,  40 )
,      ( 10, 40 )

--select * from @t

select min(id) as id,value
from @t
group by value
...
Рейтинг: 0 / 0
Помогите с написанием запроса
    #40053123
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
osipen,

А на таком датасете? :)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
insert into @t
values ( 1,  30)
,      ( 3,  10 )
,      ( 5,  20 )
,      ( 6,  20 )
,      ( 7,  30 )
,      ( 9,  40 )
,      ( 10, 40 )
...
Рейтинг: 0 / 0
Помогите с написанием запроса
    #40053173
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andgorb5,

как обозначены периоды в указанной таблице?
...
Рейтинг: 0 / 0
Помогите с написанием запроса
    #40053240
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
как обозначены периоды в указанной таблице?

Очевидно же, что id - начало, value - конец, так мой хрустальный шар говорит
...
Рейтинг: 0 / 0
Помогите с написанием запроса
    #40053266
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
;with t as (
select t1.id id1, t1.value v1, max(t2.id) id2
  from @t t1 left join @t t2 on t2.id < t1.id
  group by t1.id, t1.value
)
select t.id1 id, t.v1 value
  from t left join @t t3 on t.id2 = t3.id
  where t.v1 <> t3.value or t3.value is null
  order by 1
...
Рейтинг: 0 / 0
Помогите с написанием запроса
    #40053269
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andgorb5
Ролг Хупин,

думал с использованием двух таблиц, и сравнения их, но как мне кажется есть вариант сделать это как-то проще

Lead / lag --> start_of_group
...
Рейтинг: 0 / 0
Помогите с написанием запроса
    #40053681
88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
88
Гость
with C as
(
select
id,
[value], val_prev=lag(value) over(order by id)
from @t
)
select id,value from C where [value]<>val_prev or val_prev is null
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с написанием запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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