Предположим, у меня есть этот запрос:Как добавить столбец в набор сгруппированных столбцов?
SELECT col1, col2, col3
FROM tab1
GROUP BY col1, col2, col3
HAVING COUNT(*) > 1 -- **************EDIT****************
Я хочу, что набор столбцов должен быть уникальным. Но теперь я хочу добавить col4, который можно дублировать, поэтому он не работает, если я добавлю его и сгруппирую.
Есть ли лучший способ сделать это, чем это в SQL Server 2008 R2?
SELECT a.col1, a.col2, a.col3, b.col4
FROM (
SELECT col1, col2, col3
FROM tab1
GROUP BY col1, col2, col3
HAVING COUNT(*) > 1 -- **************EDIT****************
) a JOIN tab1 b
ON a.col1 = b.col1
AND a.col2 = b.col2
AND a.col3 = b.col3
EDIT: Извините, ребята, это то, что я искал. Вы были правы для запроса, который я опубликовал вначале, простой SELECT сделает это. Мне нужно показать все значения col4
, для каждой отдельной группы col1, col2, col3
, когда существуют дубликаты.
Спасибо.
же стоимость в плане выполнения :( – olmed0
@ olmed0 права, я не подумайте, что вы действительно собираетесь обойти это. Проблема связана с определением группы, а затем ссылкой на группу, чтобы получить ее детали. Ее можно сделать менее сложной, если ваша группа имеет уникальный идентификатор, но логика остается прежней. – Yuck
ОК, спасибо. Мне просто интересно, не хватает ли у меня какой-то функции, которая могла бы сделать трюк здесь. – olmed0