Выберите одну строку таблицы, чтобы присоединиться к каждой строке из другой таблицы - PullRequest
0 голосов
/ 06 мая 2019

У меня есть две таблицы: отделы и счета.Пример:

Отделы

+--------+--------+
|Company |DptCode  |
+--------+--------+
|SND     |CD41     |
+--------+--------+
|SND     |CD42     |
+--------+--------+

Счета

+--------+--------+
|Company |AcctCode |
+--------+--------+
|SND     |ACT      |
+--------+--------+
|SND     |BBS      |
+--------+--------+
|SND     |DIP      |
+--------+--------+

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

+--------+--------+
|DptCode |AcctCode|
+--------+--------+
|CD41    |ACT     |
+--------+--------+
|CD41    |BBS     |
+--------+--------+
|CD41    |DIP     |
+--------+--------+
|CD42    |ACT     |
+--------+--------+
|CD42    |BBS     |
+--------+--------+
|CD42    |DIP     |
+--------+--------+

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

SELECT  d.Company, d.DptCode, a.AcctCode
FROM Departments d
JOIN Accounts a ON d.Company = a.Company

Ответы [ 2 ]

1 голос
/ 06 мая 2019

с помощью соединения

;WITH CTE_dept(Company ,DptCode  )
AS
(
SELECT 'SND','CD41' UNION ALL    
SELECT 'SND','CD42'  
),CTe_Accounts(Company ,AcctCode )
AS
(
SELECT 'SND','ACT' UNION ALL     
SELECT 'SND','BBS' UNION ALL      
SELECT 'SND','DIP'      
)
SELECT cd.DptCode,
        ca.AcctCode
FROM CTE_dept cd
INNER JOIN CTe_Accounts ca
    ON  ca.Company = cd.Company

Результат

DptCode  AcctCode
-----------------
CD41     ACT
CD41     BBS
CD41     DIP
CD42     ACT
CD42     BBS
CD42     DIP
0 голосов
/ 06 мая 2019

Я думаю, вам нужно CROSS JOIN:

SELECT DISTINCT d.DptCode, a.AcctCode
FROM Departments d CROSS JOIN
     Accounts a; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...