2014-12-22 83 views
0

我返回记录如下SQL:通过重复一个查询的输出为第二查询的每个记录创建一个记录

vw_EmployeeReferenceNumbers查询

NAME  Number 
----  ------ 
AA   123 
AA   234 
AA   456 

我有另一个表返回像这样

AllEmployees记录

AllNames 
    ---------- 
    AA 
    BB 
    CC 

我要输出像这样

NAME  Number 
----  ------ 
AA   123 
AA   234 
AA   456 
BB   123 
BB   234 
BB   456 
CC   123 
CC   234 
CC   456 

我不希望在所有使用游标的记录。我不能修改视图vw_EmployeeReferenceNumbers或表AllEmployees。这可以在SQL中完成吗?

我至今不工作是:

select name, number 
from 
(select Name, number, 1 as id from vw_EmployeeReferenceNumbers 
) as A 
left join 
(select name, 1 as id from AllEmployees 
) as B 
on A.id = B.id 

回答

4

使用cross join

select e.name, ern.number 
from AllEmployees e cross join 
    vw_EmployeeReferenceNumbers ern; 
+0

没有工作。我只是一直重复AA。 – user20358

+0

@Gordon根据您提供的信息是正确的。 [小提琴示例](http://sqlfiddle.com/#!3/5faa1/1) – FriendlyManCub

+0

@ user20358。 。 。这将会让所有员工,尽管它可能以所有'AA'开头。 –

1
SELECT e.name, 
     ern.number 
FROM AllEmployees e INNER JOIN 
    EmployeeReferenceNumbers ern ON 1=1 
ORDER BY e.name 
+0

http://sqlfiddle.com/#!6/67917/2 – Vasily