powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Исключение строк из запроса.
18 сообщений из 43, страница 2 из 2
Исключение строк из запроса.
    #38219243
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pio777iap,

Если вы выполните мой запрос, то получите то, что должно быть.
Хотя-бы одна и колонок значит, что от 1, 2, 3,... или все 7.
Значение берется с приложения, в зависимости от того, что выберет пользователь.
Т.е. если я выбрал 1 то выпадают строки:
1,0,0,0,0,0,0
1,1,0,0,0,0,0
1,1,1,0,0,0,0
1,1,1,1,0,0,0
1,1,1,1,1,0,0
1,1,1,1,1,1,0
1,1,1,1,1,1,1
0,1,0,0,0,0,0
0,0,1,0,0,0,0
.................
В приложении можно выбрать несколько значений. Пример для исключение 1 и 2.А если Вы выполните мой, то не получите?
Я - за чистый и понятный русский язык в формулировке задачи.
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38219259
pio777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap,
Результат тот же, но задача ускорить, а не заменитель.
Ваш запрос в десятки тяжелее.
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38219270
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pio777iap,
Результат тот же, но задача ускорить, а не заменитель.
Ваш запрос в десятки тяжелее.
ето вы с чего взяли ? Профайлер показывает обратное
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38219273
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pio777iap,
Результат тот же, но задача ускорить, а не заменитель.
Ваш запрос в десятки тяжелее.

а вы вариант с дисперсией попробовали? 14157930
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38219287
pio777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shakill,

Ваш всего лишь в 2 раза тяжелее.
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38219290
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pio777Shakill,

Ваш всего лишь в 2 раза тяжелее.
это запрос не мой, но вообще странно. а на бОльшем количестве фильтров если сравнивать?
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38219297
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не въехал сразу в задачу
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
-- исключить из запроса все строки, где значения колонок а1-а7 равняются либо заданному значению, либо 0. 
declare @n int=1
select *
from #t 
where 
   abs(isnull(nullif(a1,@n),0))+abs(isnull(nullif(a2,@n),0))+abs(isnull(nullif(a3,@n),0))+
   abs(isnull(nullif(a4,@n),0))+abs(isnull(nullif(a5,@n),0))+abs(isnull(nullif(a6,@n),0))+
   abs(isnull(nullif(a7,@n),0))>0
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38219299
pio777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shakill,

Завтра попробую его на всех данных.
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38219370
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pio777Shakill,
Простите, что не сообщил, но есть некоторые ограничения. Запрос формирует приложение, я могу только в where добавить свой and, cte и временные таблицы тоже не получится использовать.

Переименуй таблицу, а со старым именем создай view,

select ... From theTable where a1 = x1 and a2 = x2 .....
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38219515
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не уверен, что потом не последует новой вводной)))
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
-- исключить из запроса все строки, соответствующие списку заданных значений
-- строка соответствует значению, если одна из колонок а1-а7 равняется этому значению, 
-- а все остальные содержат либо это же значение, либо 0
declare @checked table (id int)
insert @checked values(1),(2)

select t.* 
from #temp t
cross apply (select all_val=
   char(1)+CONVERT(varchar,a1)+char(1)+CONVERT(varchar,a2)+char(1)+CONVERT(varchar,a3)+
   char(1)+CONVERT(varchar,a4)+char(1)+CONVERT(varchar,a5)+char(1)+CONVERT(varchar,a6)+
   char(1)+CONVERT(varchar,a7)) a
where not exists(
   select 100500
   from @checked c
   cross apply (select chk=replace(all_val,char(1)+CONVERT(varchar,id),''))r1
   cross apply (select zero=replace(chk,char(1)+CONVERT(varchar,0),''))r2
   where len(chk)<len(all_val) and len(zero)=0
)
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38219655
angel_zar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
Declare @t table (
id int identity primary key,
a1 int not null default 0,
a2 int not null default 0,
a3 int not null default 0,
a4 int not null default 0,
a5 int not null default 0,
a6 int not null default 0,
a7 int not null default 0
)
insert into @t 
SELECT 1,0,1,0,5,6,7
UNION ALL
SELECT
	  2,0,1,0,5,6,7
UNION ALL
SELECT
	  1,0,1,0,8,6,7
UNION ALL
SELECT
	  1,0,1,0,0,0,0
UNION ALL
SELECT
	  1,0,1,0,1,1,0
UNION ALL
SELECT
	  0,2,2,0,0,2,0
UNION ALL
SELECT
	  1,1,1,1,1,1,1
UNION ALL
SELECT
	  0,0,0,0,0,0,0

Select * from @t

Declare @MyVal int
set @MyVal=2

Select *
from @t
where
ABS(IsNull(NullIf(a1,@MyVal),0))+
ABS(IsNull(NullIf(a2,@MyVal),0))+
ABS(IsNull(NullIf(a3,@MyVal),0))+
ABS(IsNull(NullIf(a4,@MyVal),0))+
ABS(IsNull(NullIf(a5,@MyVal),0))+
ABS(IsNull(NullIf(a6,@MyVal),0))+
ABS(IsNull(NullIf(a7,@MyVal),0))
=0
and
ABS(a1)+
ABS(a2)+
ABS(a3)+
ABS(a4)+
ABS(a5)+
ABS(a6)+
ABS(a7)<>0



Вот теперь предусмотрено, чтоб все 0ли не выходили
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38220321
pio777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так,незнаю, сумеет ли ТС "запихнуть" это в условие, но так - не врёт
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select * from #t
where id not in
	(select id from
		(select * from #t
			unpivot(val FOR a IN (a1,a2,a3,a4,a5,a6,a7))AS unpvt) a
	where val <> 0
	group by id
	having var(val)=0 and avg(val) in (1,2))



Не исключит такое: 1,0,0,0,0,0,0.
В этом случае дисперсия будет null.
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38220398
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть задача решенной не считается?
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38220406
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007то есть задача решенной не считается?Она была решена в первом посте!
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38220411
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapCygapb-007то есть задача решенной не считается?Она была решена в первом посте!Насколько я понимаю, там был частный случай для выбора двух значений (1 и 2). Требовалось решение для общего случая.

Хотя возможно, я снова неверно понял постановку задачи
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38220445
pio777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007iapпропущено...
Она была решена в первом посте!Насколько я понимаю, там был частный случай для выбора двух значений (1 и 2). Требовалось решение для общего случая.

Хотя возможно, я снова неверно понял постановку задачи

Все вы правильно поняли. Последний ваш запрос не корректно работает когда в строке только нули.
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38220458
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pio777Cygapb-007пропущено...
Насколько я понимаю, там был частный случай для выбора двух значений (1 и 2). Требовалось решение для общего случая.

Хотя возможно, я снова неверно понял постановку задачи

Все вы правильно поняли. Последний ваш запрос не корректно работает когда в строке только нули.Вы в этом уверены?
Код: sql
1.
2.
3.
4.
5.
-- if object_id('tempdb..#temp') is not null drop table #temp
if object_id('tempdb..#temp') is null begin
  create table #temp (id int identity, a1 int, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int)
  insert #temp values (0,0,0,0,0,0,0),(1,1,1,1,1,1,1),(0,0,1,1,0,0,1),(0,1,1,0,2,0,1)
end

ida1a2a3a4a5a6a71000000030110201
...
Рейтинг: 0 / 0
Исключение строк из запроса.
    #38220478
тада, так
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pio777так,незнаю, сумеет ли ТС "запихнуть" это в условие, но так - не врёт
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select * from #t
where id not in
	(select id from
		(select * from #t
			unpivot(val FOR a IN (a1,a2,a3,a4,a5,a6,a7))AS unpvt) a
	where val <> 0
	group by id
	having var(val)=0 and avg(val) in (1,2))



Не исключит такое: 1,0,0,0,0,0,0.
В этом случае дисперсия будет null.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select * from #t
where id not in
	(select id from
		(select * from #t
			unpivot(val FOR a IN (a1,a2,a3,a4,a5,a6,a7))AS unpvt) a
	where val <> 0
	group by id
	having max(val)=min(val) and avg(val) in (1,2))
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Исключение строк из запроса.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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