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

Откуда:
Сообщений: 9
Всем привет.Вот не могу решить кажется простую задачу:
Есть таблица
CodeShortNameAccount
01name16
02name26
03name37
04name47
05name58


где Code-табельный номер,Account-номер банковского счета.

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

То есть мы должны увидеть
CodeShortNameAccount
01name16
02name26
03name37
04name47



Вот скрипт,который выводит банк.счета,количество которых больше или равно двум
select  Account,count(*) as Account_qty   from Employee 
join PersonDescription on (Employee.PersonID = PersonDescription.PersonID)
and PersonDescription.Lan = 'ru'
and Employee.State = '0'
join EmployeeBank on (Employee.ID = EmployeeBank.EmployeeID)
and  EmployeeBank.State = '0'
group by Account
having count(*) >=2


Картинка с другого сайта.

А скрипт с выборкой людей,у который одинаковые счета не работает

use Trening
select  Code,ShortName,count(*) as Account_qty   from Employee 
join PersonDescription on (Employee.PersonID = PersonDescription.PersonID)
and PersonDescription.Lan = 'ru'
and Employee.State = '0'
join EmployeeBank on (Employee.ID = EmployeeBank.EmployeeID)
and  EmployeeBank.State = '0'
group by Code,ShortName
having count(*)>=2
order by Code
13 май 14, 17:43    [16011577]     Ответить | Цитировать Сообщить модератору
 Re: Выборка только одинаковых значений  [new]
Glory
Member

Откуда:
Сообщений: 104751
select * from "есть таблица" a
where exists(select * from "есть таблица" b where a.Account = b.Account and a.ShortName <> b.ShortName)
13 май 14, 17:46    [16011598]     Ответить | Цитировать Сообщить модератору
 Re: Выборка только одинаковых значений  [new]
Ne0
Member

Откуда:
Сообщений: 9
Glory
select * from "есть таблица" a
where exists(select * from "есть таблица" b where a.Account = b.Account and a.ShortName <> b.ShortName)


Выдает ошибку Invalid column name 'ShortName'
13 май 14, 17:52    [16011630]     Ответить | Цитировать Сообщить модератору
 Re: Выборка только одинаковых значений  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ne0
Glory
select * from "есть таблица" a
where exists(select * from "есть таблица" b where a.Account = b.Account and a.ShortName <> b.ShortName)


Выдает ошибку Invalid column name 'ShortName'

Я взял те имена полей, которые вы показали здесь
Если в реальности они у вас отличаются, то эта ваша проблема
13 май 14, 17:54    [16011639]     Ответить | Цитировать Сообщить модератору
 Re: Выборка только одинаковых значений  [new]
Ne0
Member

Откуда:
Сообщений: 9
Glory
Ne0
пропущено...


Выдает ошибку Invalid column name 'ShortName'

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


В реальности они у меня точно такие же.
13 май 14, 17:55    [16011648]     Ответить | Цитировать Сообщить модератору
 Re: Выборка только одинаковых значений  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ne0
Glory
пропущено...

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


В реальности они у меня точно такие же.

Серверу врать незачем. Он - программа. Не человек.

Сообщение было отредактировано: 13 май 14, 17:57
13 май 14, 17:56    [16011659]     Ответить | Цитировать Сообщить модератору
 Re: Выборка только одинаковых значений  [new]
Ne0
Member

Откуда:
Сообщений: 9
Glory
Ne0
пропущено...


В реальности они у меня точно такие же.

Серверу врать незачем. Он - программа. Не человек.


Да,это я тупанул, дело в том что ShortName у меня берется из таблицы PersonDescription, а Acсount из таблицы EmployeeBank. Т.е. мне нужно их связать и в Join уже ставить подзапрос или как?
13 май 14, 18:02    [16011691]     Ответить | Цитировать Сообщить модератору
 Re: Выборка только одинаковых значений  [new]
aleks2
Guest
select * from [Есть таблица] T 
  where exists(select * from [Есть таблица] TT where TT.Account = T.Account and TT.Code <> T.Code)
13 май 14, 18:09    [16011731]     Ответить | Цитировать Сообщить модератору
 Re: Выборка только одинаковых значений  [new]
Ne0
Member

Откуда:
Сообщений: 9
aleks2
select * from [Есть таблица] T 
  where exists(select * from [Есть таблица] TT where TT.Account = T.Account and TT.Code <> T.Code)


*Есть таблица* - это join из трех различных таблиц, по-разному связанных между собой.
13 май 14, 18:18    [16011776]     Ответить | Цитировать Сообщить модератору
 Re: Выборка только одинаковых значений  [new]
aleks2
Guest
Ne0
aleks2
select * from [Есть таблица] T 
  where exists(select * from [Есть таблица] TT where TT.Account = T.Account and TT.Code <> T.Code)


*Есть таблица* - это join из трех различных таблиц, по-разному связанных между собой.


Тибе кляузу with не преподали?
13 май 14, 18:31    [16011837]     Ответить | Цитировать Сообщить модератору
 Re: Выборка только одинаковых значений  [new]
Ne0
Member

Откуда:
Сообщений: 9
aleks2
Ne0
пропущено...


*Есть таблица* - это join из трех различных таблиц, по-разному связанных между собой.


Тибе кляузу with не преподали?


WITH MyTable_CTE (Code, ShortName, Account)
AS
(
    select  Code,ShortName, Account  from Employee
	join PersonDescription on (Employee.PersonID = PersonDescription.PersonID)
	and PersonDescription.Lan = 'ru'
	and Employee.State = '0'
	join EmployeeBank on (Employee.ID = EmployeeBank.EmployeeID)
	and  EmployeeBank.State = '0'
)
select * from MyTable_CTE T 
  where exists(select * from MyTable_CTE TT where TT.Account = T.Account and TT.Code <> T.Code)


Картинка с другого сайта.

aleks2, спасибо большое!
13 май 14, 18:52    [16011929]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить