Групповые функции

Basil A. Sidorov
Дата: 12.07.2012 15:52:04
А насколько нестандартно/плохо/сложно использовать values() в качестве групповой функции с таким минимальным синтаксисом:
select
 [список колонок, не содержащий values(),]
 values([ALL|DISTINCT] список других колонок [order by спецификация сортировки]
 [, список третьих колонок, не содержащий values()]
from спецификация таблиц
...
group by спецификация группировки
?
Смысл в том, что для внешней группировки весь набор данных внутри values() - одна строка, но в результат values() выдаст столько строк, сколько получится.

P.S. С (умалчиваемым) ALL ограничение "не содержащий values()" необязательно.
Гаджимурадов Рустам
Дата: 12.07.2012 17:18:38
Тут, ИМХО, без поллитры не понять. Приведи пример, плиз.
Гаджимурадов Рустам
Дата: 12.07.2012 17:20:21
Basil A. Sidorov
Смысл в том, что для внешней группировки весь набор данных внутри values() -
одна строка, но в результат values() выдаст столько строк, сколько получится.
А, всё, дошло. Это чтобы DT не плодить. Синтаксический сахар, не иначе.
Basil A. Sidorov
Дата: 12.07.2012 17:41:53
Гаджимурадов Рустам
Это чтобы DT не плодить.
Теперь я не понял.
Есть таблица с дублями организаций - ИНН и КПП повторяются, а названия разные.
Сейчас я могу сделать:
select
 count(id) "Дублей",
 inn "ИНН", kpp "КПП",
 min(name) "Первый",
 max(name) "Последний"
from org
having count(id) > 1
group by inn, kpp
order by 2, 3, 4, 1
узнав сколько дублей в каждой группе и сориентироваться по названиям. Для оценки масштабов бедствия - годится.
Каким образом вы предлагаете получить наименования всех дублей каждой группы в виде:
ИД, ИНН, КПП, Наименование
?
Basil A. Sidorov
Дата: 12.07.2012 17:48:40
Какой-нибудь:
select o.id, o.inn, o.kpp, o.name
from org o
left join (select inn, kpp from org group having count(id) > 1 group by inn, kpp) t
on o.inn = t.inn and o.kpp = t.kpp
?
Basil A. Sidorov
Дата: 12.07.2012 17:53:58
Basil A. Sidorov
Какой-нибудь:
или right или таблички местами поменять :)

P.S. Хм-м ... Надо будет завтра посмотреть ...
Гаджимурадов Рустам
Дата: 12.07.2012 18:05:07
Basil A. Sidorov
узнав сколько дублей в каждой группе и сориентироваться по названиям.
Для оценки масштабов бедствия - годится.
Для этого почти всё сгодится, тот же List, к примеру. Судя по описанию, задача разовая и техническая - не совсем логично хотеть изменений синтаксиса, когда есть несколько вариантов слабать запрос/EB.

Basil A. Sidorov
Каким образом вы предлагаете получить наименования всех дублей каждой группы в виде:
ИД, ИНН, КПП, Наименование
?
Подзапрос, джойн, DT.