Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
relief Member Откуда: Сообщений: 1197 |
почему данную конструкцию студия заворачивает?SELECT 1, DISTINCT(Name), ModelGroup FROM tmp_NewModels а такую нет? SELECT DISTINCT(Name), 1, ModelGroup FROM tmp_NewModels |
9 июл 12, 15:10 [12839222] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
Во втором случае (Name) - это просто колонка Name, ибо скобки ничего не меняют (лишние, проще говоря) |
||
9 июл 12, 15:13 [12839249] Ответить | Цитировать Сообщить модератору |
Troglodit Member Откуда: Сообщений: 505 |
DISTINCT -это не функция. SELECT DISTINCT Name,1, ModelGroup FROM tmp_NewModels Фактически ваш запрос равен этому. SELECT DISTINCT(Name), 1, ModelGroup FROM tmp_NewModels -ошибочный запрос. |
9 июл 12, 15:13 [12839254] Ответить | Цитировать Сообщить модератору |
relief Member Откуда: Сообщений: 1197 |
т.е. вы хотите сказать, что по факту мой запрос равен ? мне просто непонятно как работает distinct в данном случае. т.е. мне надо выбрать уникальные имена, но к ним прицепить еще 2 столбца SELECT DISTINCT(Name) FROM tmp_NewModels |
||||
9 июл 12, 15:19 [12839291] Ответить | Цитировать Сообщить модератору |
Megabyte Member Откуда: ближайшее заМКАДье Сообщений: 4973 |
Придется написать запрос по-другому, ибо DISTINCT не подойдет для вашей задачи. |
||
9 июл 12, 15:24 [12839321] Ответить | Цитировать Сообщить модератору |
relief Member Откуда: Сообщений: 1197 |
а для понимания можете объяснить логику работы данного запроса? SELECT DISTINCT(Name), 1, ModelGroup FROM tmp_NewModels |
||||
9 июл 12, 15:26 [12839348] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
![]()
Поскольку из результата исчезают записи, полностью совпадающие с какой-то возращённой, проблем не возникает А Вас понять сложно: Во втором случае возникнет вопрос, а какие значения выбирать для остальных полей? Версия сервера какая? |
||||
9 июл 12, 15:28 [12839363] Ответить | Цитировать Сообщить модератору |
Troglodit Member Откуда: Сообщений: 505 |
SELECT name from (SELECT DISTINCT Name as name FROM tmp_NewModels ) as table 1 inner join table2 on ... Для тех кто в танке DISTINCT не применяется только к одному полю,а ко всем сразу без вариантов. |
9 июл 12, 15:35 [12839434] Ответить | Цитировать Сообщить модератору |
relief Member Откуда: Сообщений: 1197 |
сервер - 2005 надо выбрать только записи с уникальным Name?, но надо еще видеть 2 столбца, уникальность по которым проверять не надо |
||||||
9 июл 12, 15:42 [12839495] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
|
||
9 июл 12, 15:43 [12839508] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
|
||||
9 июл 12, 15:47 [12839534] Ответить | Цитировать Сообщить модератору |
SanSYS Member Откуда: Сообщений: 1879 |
SELECT count(*), Name, 1, ModelGroup FROM tmp_NewModels group by Name, 1, ModelGroup |
9 июл 12, 15:49 [12839550] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
;WITH CTE AS(SELECT C=CONT(*)OVER(PARTITION BY Name),* FROM tmp_NewModels) SELECT * FROM CTE WHERE C=1; |
9 июл 12, 15:50 [12839554] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
Опечатка
;WITH CTE AS(SELECT C=COUNT(*)OVER(PARTITION BY Name),* FROM tmp_NewModels) SELECT * FROM CTE WHERE C=1; |
||
9 июл 12, 15:51 [12839563] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
|
||
9 июл 12, 15:56 [12839601] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |