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

думал с использованием двух таблиц, и сравнения их, но как мне кажется есть вариант сделать это как-то проще
...
Рейтинг: 0 / 0
13.03.2021, 11:18
    #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
13.03.2021, 12:06
    #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
13.03.2021, 17:17
    #40053173
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с написанием запроса
andgorb5,

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

Очевидно же, что id - начало, value - конец, так мой хрустальный шар говорит
...
Рейтинг: 0 / 0
14.03.2021, 04:05
    #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
14.03.2021, 09:22
    #40053269
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с написанием запроса
andgorb5
Ролг Хупин,

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

Lead / lag --> start_of_group
...
Рейтинг: 0 / 0
15.03.2021, 16:00
    #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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с написанием запроса / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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