[英]Select one table row to join to each row from another table
我有两个表,部门和帐户。 例如:
部门
+--------+--------+
|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
使用联接
;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
我认为您需要CROSS JOIN
:
SELECT DISTINCT d.DptCode, a.AcctCode
FROM Departments d CROSS JOIN
Accounts a;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.