У меня есть набор данных, состоящий в основном из дат, идентификаторов и адресов, который выглядит немного как это:SQL Query, GROUP/COUNT проблема с INNER JOIN
datadate id address
20150801 Bob 123
20150801 Bob 123
20150801 Dan 345
20150801 Dan 456
20150801 Dan 567
20150801 George 234
20150801 Jim 123
20150801 Jim 123
20150801 John 678
20150801 John 123
20150802 Tom 123
20150802 Tom 234
20150802 Tom 345
Моя цель состоит в том, чтобы написать запрос, который идентифицирует любые идентификаторы, которые связаны с несколькими разными адресами на определенную дату (или диапазон дат). Я хочу, чтобы результаты запроса отображали мне имя и разные адреса. Таким образом, для этого набора данных, результаты, которые я хотел бы видеть, будет выглядеть следующим образом, на сегодняшний день 8/1/2015:
datadate id address
20150801 Dan 345
20150801 Dan 456
20150801 Dan 567
20150801 John 678
20150801 John 123
Запрос я работал до сих пор, но это не действительно работает для меня:
SELECT a.[datadate], a.[id], a.[address], b.[count1]
FROM table1 AS a INNER JOIN (SELECT [id], COUNT([address]) as [count1] FROM table1 GROUP BY [id] having count1 > 1 ) AS b ON a.[id]=b.[id]
WHERE a.[datadate] = '20150801'
ORDER BY a.[id], a.[address];
Любые предложения?
Я только что проверил этот вариант, и он очень хорошо работает для меня. Он не работал в «MS-Access» (из-за оператора DISTINCT), но он отлично работал в «Impala» (где и находится моя большая таблица данных). Благодаря! – nxl4
@ Psychonaut418 Удивительный! Да, я думаю, что синтаксис немного отличается для MS-Acess. – FutbolFan