2017-07-18 57 views
0

我有两个查询,每个查询返回两列。它们是:SQL精选语句中的多列中的多列


SELECT 
    visit.doctor_id, 
    COUNT(
    visit.doctor_id) 
    FROM 
    visit 
    GROUP BY 
    visit.doctor_id 

结果是

Doctor ID | Visit Count 
    4   20 
    5   30 

SELECT 
    procedures.surgeon, 
    COUNT(
    procedures.surgeon) 
    FROM 
    procedures 
    GROUP BY 
    procedures.surgeon 

结果是

Surgeon ID | Visit Count 
    3   8 
    9   13 

我tryi将它们合并成一个具有所有4列的表格。我可以稍后扩展以添加更多内容。 (SELECT ....)as'name'然而我尝试使用SELECT(SELECT ....)作为'name',(SELECT ....)作为'NAME',但是我尝试了UNION,但是这给了我只有两列,我尝试了FULL UNION这是行不通的,因为每个select语句都会输出两列而不是一列。我也无法弄清楚如何使用此解决方案的JOIN功能。

我想要的结果是

Doctor ID | Doctor Visit Count | Surgeon ID | Surgeon Operation Count 
    4   20     3    8 
    5   30     9    13 

任何帮助,将不胜感激。谢谢。

+0

JOIN绝对是你在这里寻找什么,你尝试了什么JOINs? –

+0

背靠背使用两个CTE并将结果插入另一个新表 –

+0

这两个表之间是否存在关系? –

回答

1

当您合并两个没有公共字段的表格时,可以使用笛卡尔积。

SELECT 
    * 
    FROM 
    (SELECT 
     visit.doctor_id, 
     COUNT(visit.doctor_id) AS 'COUNT' 
     FROM visit 
     GROUP BY visit.doctor_id) AS A, 
    (SELECT 
     procedures.surgeon, 
     COUNT(procedures.surgeon) AS 'COUNT' 
     FROM procedures 
     GROUP BY procedures.surgeon) AS B 
+0

我在第二个和第三个SELECT语句以及每个GROUP BY下得到错误。试图运行时,我得到错误:表达式是预期的。 (靠近“(”在位置30) 意外的标记(接近“(”在位置30) 此类型的子句先前已解析(在位置31的“选择”附近) 意外的标记(靠近“)”位置141) 意外令牌。(近“”在位置142) 意外令牌。(近‘(’在位置149) 这类条款先前(在位置150附近的‘选择’)解析。 意外标记(靠近“)”在位置274) –

+0

可以试试我编辑的脚本吗? – zzT

+0

谢谢。它完全按照需要工作。 –

相关问题