2015-05-15 3 views
1

Я унаследовал файл excel, преобразованный в базу данных, и я пытаюсь выяснить людей, которые отправились в несколько мест.Несколько условий в одной таблице

| Customer | email   | ZIP | shop | 
| John Smith | [email protected] | 75016 | 1 | 
| Mary King | [email protected] | 97430 | 2 | 
| John Smith | [email protected] | 75016 | 3 | 
| Ivan Turtle | [email protected] | 56266 | 5 | 
| Mary King | [email protected] | 97430 | 5 | 
| John Smith | [email protected] | 75016 | 5 | 

Например: Джон Смит был в 1, 3, 5 Mary King 2, 3

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

+0

by se Я имею в виду разные идентификаторы в столбце магазина – Zourite974

+0

Могут ли быть повторяющиеся строки? –

ответ

0

предполагая, что каждый ряд определяет отдельное место,

select customer, count(*) as countOfLocation 
from TABLE 
group by customer 
having count(*) > 1 
order by countOfLocation desc 

ли простой ответ

0

Я верю, что что-то подобное будет работать на вас.

Найти всех клиентов, которые были в нескольких магазинах, а затем присоединиться к ним, чтобы получить информацию о каждом клиенте.

Это даст несколько строк на человека, по одному для каждого магазина, в котором они были. Если вас интересуют только имена клиентов, вы можете просто использовать второй номер SELECT

Если вам нужна одна строка для каждого клиента и CSV магазинов, вам нужно будет немного присоединиться.

SELECT a.* 
FROM Customers a 
INNER JOIN 

-- Find all customers who have been to more than one shop. 
(SELECT email 
FROM Customers 
GROUP BY email 
HAVING COUNT(shop) > 1) b 

ON a.email = b.email 
0

Try с этим, если это Sql сервер:

select customer, count(distinct(shop)) 
from table 
group by customer, shop 
having count(distinct(shop)) > 1 

или вы только хотите, чтобы узнать, сколько мест они посетили:

select customer, count(distinct(shop)) 
    from table 
    group by customer, shop 
0

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

SELECT Customer 
     ,STUFF((SELECT ', ' + CAST(shop AS VARCHAR(10)) [text()] 
     FROM 'ur table' 
     WHERE customer = t.customer 
     FOR XML PATH(''), TYPE) 
     .value('.','NVARCHAR(MAX)'),1,2,' ') List_Output 
FROM 'ur table' t 
GROUP BY customer