kind1212 Ответов: 1

Как исключить определенный диапазон в результатах SQL?


Я хотел бы скопировать определенный диапазон внутри таблицы q SQL и ввести его в новую таблицу. Мне также нужно исключить часть результатов.

Я видел на некоторых форумах и некоторых сайтах учебников SQL, что они в основном используют оператор BETWEEN, но это можно использовать только в одном условии.

Мое условие-скопировать определенный диапазон с 2 условиями, такими как start copy with specific номер части и закончим на этом тип это "А", но эти данные должны быть после, так что это может быть диапазон.

ОБНОВЛЕННЫЙ-- Ниже Ссылка на полный вопрос.

Как исключить определенный диапазон в результатах SQL? - переполнение стека[^]

спасибо всем.

[EDIT - один из способов отображения выборочных данных]
NO	TYPE	Part	Quantity	other
1	Z       1001	1	
2	A       1002	1	
3	T       1003	1	
4	C       1004	1	
5	F       1005	1	
6	V       1006	1	
7	C       1007	1	
8	B       1008	1	
9	D       1009	1	
10	S       1010	1	
11	V       1011	1	
12	Z       1012	1	
13	X       1013	1	
14	A       1014	1	
15	H       1015	1	
16	V       1016	1	
17	L       1017	1	
18	A       1018	1	

Еще один способ показать некоторые примеры данных
create table demo (NO int identity(1,1)
,	TYPE	char(1)
,   Part	int
,	Quantity int
, other varchar(10) NULL)
insert into demo (TYPE, Part, Quantity) VALUES
('Z',	1001,	1	),
('A',	1002,	1	),
('T',	1003,	1	),
('C',	1004,	1	),
('F',	1005,	1	),
('V',	1006,	1	),
('C',	1007,	1	),
('B',	1008,	1	),
('D',	1009,	1	),
('S',	1010,	1	),
('V',	1011,	1	),
('Z',	1012,	1	),
('X',	1013,	1	),
('A',	1014,	1	),
('H',	1015,	1	),
('V',	1016,	1	),
('L',	1017,	1	),
('A',	1018,	1	)

Предполагаемые результаты
NO	TYPE	Part	Quantity	other
2	A       1002	1	
3	T       1003	1	
4	C       1004	1	
5	F       1005	1	
6	V       1006	1	
7	C       1007	1	
8	B       1008	1	
9	D       1009	1	
10	S       1010	1	
11	V       1011	1	
12	Z       1012	1	
13	X       1013	1	
14	A       1014	1


Что я уже пробовал:

Я видел на некоторых форумах и некоторых сайтах учебников по SQL

CHill60

Не ленитесь - скопируйте свой полный вопрос сюда и избавьтесь от ссылки!
Покажите нам, что вы пробовали.
По крайней мере дайте некоторые примеры данных и ваши ожидаемые результаты

kind1212

sry, я также хочу поставить полный вопрос здесь, но он не может быть прикреплен к какому-либо изображению.

CHill60

Для такого вопроса нет абсолютно никакой необходимости в изображении

kind1212

образ-это таблица SQL и ожидаемый результат.спасибо.

CHill60

Я знаю, что это так. Это не то, как вы должны представлять данные и ожидаемые результаты. Помогите нам помочь вам!
Я обновил ваш пост с вашими образцами данных и ожидаемыми результатами.
Теперь вам нужно обновить свой пост с фактической логикой, которую вы применили, чтобы получить ожидаемые результаты, потому что способ, которым вы это объяснили, не ясен

kind1212

о~хорошо, Тысяча благодарностей за то, что помогли мне отредактировать вопрос более четко.спасибо тебе!

kind1212

я пробовал этот код, но он будет выдавать данные, которые являются ошибкой, как возврат данных из диапазона.спасибо.

1 Ответов

Рейтинг:
0

CHill60

Сначала определите точку в которой вы хотите остановиться например

DECLARE @endNO INT = (SELECT MIN(Part) FROM demo WHERE Part > 1002 AND [TYPE]='A')
PRINT @endNO
Что в данном случае возвращает 1014
Затем подключите его к своему диапазону для, например, между
SELECT   NO, TYPE, Part, Quantity, other 
FROM demo
WHERE Part BETWEEN 1002 AND @endNO
Все это кажется немного надуманным, хотя и выглядит так, как будто вы зависите от порядка номеров деталей. Я не говорю, что то, что вы делаете, неправильно, но это действительно кажется немного странным.


kind1212

очень Вам благодарен!!!!! я попробую это сделать,и один маленький вопрос заключается в том, когда устанавливается деталь > 1002, если некоторое время моя деталь не находится в порядке возрастания или формате номера детали,например 20-0-1, 10-0-2 и так далее.будет ли "часть" также функциональна?

W∴ Balboos, GHB

То, что вы можете извлечь из приведенного выше ответа на вопрос и вашего собственного комментария, заключается в том, что вам нужно тщательно планировать свое хранение данных. Разница может быть между тем, чтобы сделать вещи легкими, и тем, чтобы сделать вещи очень трудными или невозможными.

Это один из самых важных шагов.

CHill60

Мой виртуальный 5-й сэр! Хорошо сказано.

kind1212

я пробовал этот код, но он будет выдавать данные, которые являются ошибкой, как возврат данных из диапазона.спасибо.

CHill60

При работе с образцами данных, которые вы предоставили, код, который я предоставил, дал ожидаемые результаты, которые вы предоставили. Однако все, что я вам дал, - это принцип того, как это сделать, как вы это описали.
Посмотрите на комментарий от Balboos и мой последний комментарий в моем решении ... вы сами себе все усложняете. Вы также, по - видимому, пытаетесь обрабатывать данные так, как будто они имеют порядок внутри таблицы-это база данных, а не электронная таблица excel! В номерах деталей не должно быть понятия "после".
Возможно, если вы объясните, чего вы на самом деле пытаетесь достичь, вы получите лучший ответ