Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Повторяющиеся значения в нескольких полях  [new]
zz
Member

Откуда: Колыбель космонавтики
Сообщений: 1796
Имеем таблицу
CREATE TABLE [MyTable] (
	[id] [int] IDENTITY (1, 1) NOT NULL ,
	[A] [int] NULL ,
	[B] [int] NULL ,
	[C] [int] NULL ,
	[Criteria] [int] NULL ,
	CONSTRAINT [PK_MyTable] PRIMARY KEY  CLUSTERED 
	(
		[id]
	)  ON [PRIMARY] 
) ON [PRIMARY]

Требуется: получить список значений, присутcтвующих во всех строках, отвечающих заданному Criteria, хотя бы в одном из столбцов A, B, C.

Пример:
A   B   C   Criteria
1   1   2   15
5   1   2   15
2   8   1   15
3   7   9   17
5   8   3   17
3   8   3   17
Для Criteria 15 должно получиться 1 и 2, для Сriteria 17 - 3
11 май 04, 18:02    [672156]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющиеся значения в нескольких полях  [new]
Glory
Member

Откуда:
Сообщений: 104760
Теперь бы еще понять что для вас значит "отвечающих заданному Criteria" ?
Это что - сумма, произведение, вторая производная ?
11 май 04, 18:18    [672216]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющиеся значения в нескольких полях  [new]
Палестинец
Member

Откуда:
Сообщений: 8314
Наверно не самый оптимальный ;) , но тоже вариант :

CREATE TABLE [MyTable] (
	[id] [int] IDENTITY (1, 1) NOT NULL ,
	[A] [int] NULL ,
	[B] [int] NULL ,
	[C] [int] NULL ,
	[Criteria] [int] NULL ,
	CONSTRAINT [PK_MyTable] PRIMARY KEY  CLUSTERED 
	(
		[id]
	)  ON [PRIMARY] 
) ON [PRIMARY]
insert mytable (a,b,c,criteria)
select 1,   1,   2,   15 union all
select 5,   1,   2,   15 union all
select 2,   8,   1,   15 union all
select 3,   7,   9,   17 union all
select 5,   8,   3,   17 union all
select 3,   8,   3,   17

declare @cr int
set @cr=15

declare @count int 
select @count=count(*) from  mytable where criteria=@cr
select a from (
select a from mytable where criteria=@cr 
union all
select a=b from mytable where criteria=@cr and  b<>a 
union all
select a=c from mytable where criteria=@cr and c<>a and c<>b ) as a1
group by a
having count(a)=(select count(*) from  mytable where criteria=@cr)
drop table mytable
11 май 04, 18:34    [672274]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющиеся значения в нескольких полях  [new]
zz
Member

Откуда: Колыбель космонавтики
Сообщений: 1796
Больщое спасибо!!! То, что надо :)
12 май 04, 10:30    [673003]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить