Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Простой запрос на исключение специфического дубликата / 6 сообщений из 6, страница 1 из 1
28.11.2019, 16:41
    #39895792
alexFV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос на исключение специфического дубликата
Добрый день!

Помогите, пожалуйста, с простым запросом.

Есть таблица Cities:
ID Name Country Population2 Город1 1 10003 Город2 1 20004 Город1 2 5005 Город3 2 300

Есть запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT 
       [Name]
      ,[Country]
      ,[Population]
	  , 1 as Code
  FROM [Cities]
  WHERE Country = 1
UNION
 SELECT 
       [Name]
      ,[Country]
      ,[Population]
	  , 2 as Code
	   FROM [Cities]
	   WHERE Country = 2



Запрос сейчас возвращает 4 записи.
Name Country Population CodeГород1 1 1000 1Город1 2 500 2Город2 1 2000 1Город3 2 300 2

Необходимо, изменить запрос, чтобы в результирующей выборке не попадались одинаковые по наименованию города, т.е. в нашем случае должно быть:
Name Country Population CodeГород1 1 1000 1Город2 1 2000 1Город3 2 300 2

Подскажите, пожалуйста, как это сделать?
...
Рейтинг: 0 / 0
28.11.2019, 16:50
    #39895795
Владимир Затуливетер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос на исключение специфического дубликата
Просто сделайте группировку по Городу.
Код: sql
1.
2.
3.
4.
5.
6.
select
    Name
  , sum(Population) as Population
from Cities
where Country in (1, 2)
group by Name
...
Рейтинг: 0 / 0
28.11.2019, 16:53
    #39895799
alexFV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос на исключение специфического дубликата
Не, Population не надо суммировать. Упрощенно задача в следующем: во второй выборке (UNION) не должны попасть города из первой выборки.
...
Рейтинг: 0 / 0
28.11.2019, 16:54
    #39895801
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос на исключение специфического дубликата
alexFV
Не, Population не надо суммировать. Упрощенно задача в следующем, во второй выборке (UNION) не должны попасть города из первой выборки.

not exists
...
Рейтинг: 0 / 0
28.11.2019, 16:58
    #39895802
Владимир Затуливетер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос на исключение специфического дубликата
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
with cteData
as (
	select
	    Name
	  , Country
	  , Population
	  , 1 as Code
	from Cities
	where Country = 1
	union all
	select
	    Name
	  , Country
	  , Population
	  , 2 as Code
	from Cities
	where Country = 2
) ,
cteNumbered
as (
	select *, row_number() over ( partition by Name order by Code ) as DupNum
	from cteData
)
select *
from cteNumbered
where DupNum = 1
...
Рейтинг: 0 / 0
28.11.2019, 17:10
    #39895812
alexFV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос на исключение специфического дубликата
Владимир Затуливетер,
СПАСИБО! То, что нужно!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Простой запрос на исключение специфического дубликата / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]