Как заставить его возвращать каждый столбец в таблице при использовании INNER JOIN для двух таблиц, - PullRequest
0 голосов
/ 23 апреля 2020

Таблица dbo.Ögon

Таблица dbo.CaseTable

Я импортировал файл .csv и создал таблицу из. CSV-файл. Он содержит два столбца, которые соответствуют столбцам / значениям другой таблицы. Этот CSV-файл содержит 2245 строк, которые также представляют собой количество строк в созданной мной таблице, которое называется dbo.Ögon

Ниже приведен INNER JOIN запрос, который я написал.

SELECT * FROM [dbo].[CaseTable] P
INNER JOIN [dbo].[Ögon] O
ON P.Personnummer = O.Pnr;

Это возвращает результат 9085 строк, который не является результатом, который я искал.

Но!

Если я вместо этого напишу запрос.

SELECT DISTINCT Personnummer, Fotodatum
FROM [dbo].[CaseTable] P
INNER JOIN [dbo].[Ögon] O
ON P.Personnummer = O.Pnr;

Я получу те же строки, что и в CSV-файле или в таблице dbo.Ögon, но я также вижу два столбца.

Итак. То, что я ищу в результате при выполнении запроса, - это видеть каждый столбец вместо двух столбцов с количеством строк, которое я указывал ранее.

Для пояснения. Я ищу столбец с именем CaseKey, который не существует в таблице dbo.Ögon, но существует в таблице dbo.CaseTable

Поэтому я ищу запрос, который возвращает все столбцы, чтобы я мог видеть столбец CaseKey.

Надеюсь, меня это не смущало :)

1 Ответ

0 голосов
/ 23 апреля 2020

Похоже, у вас есть дубликаты - я думаю, в таблице ogon. Один метод использует ROW_NUMBER(). Если эта интерпретация верна, вы можете использовать:

SELECT p.*, o.*
FROM [dbo].[CaseTable] p JOIN
     (SELECT o.*, 
             ROW_NUMBER() OVER (PARTITION BY o.Pnr, o.FotoDatum ORDER BY NEWID()) as seqnum
      FROM [dbo].[Ögon] o
     ) o
     ON p.Personnummer = o.Pnr AND seqnum = 1;

Обратите внимание, что у вас обычно есть ORDER BY в ROW_NUMBER(), чтобы указать , какую строку вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...