如何将两个SQL查询合并为一个?

珊瑚

我是SQL的新手,目前正在尝试学习如何在Visual Studio中制作报表。我需要制作一张表格,图表和其他一些东西。我决定做矩阵的最后一部分,现在我陷入了困境。我在SQL Server中编写查询。

我有两个表:Staff(empID,StaffLevel,姓氏)和WorkOfArt(artID,名称,策展人,helpingCurator)。在Curator和HelpingCurator列中,我使用了empID中的数字。

我希望我的矩阵显示每个empID以及充当策展人的绘画数量以及充当帮助策展人的绘画数量(所以我想三列:empID,count(curator) ,count(helpingCurator)。

Select Staff.empID, count(WorkOfArt.Curator) as CuratorTotal
FROM Staff, WorkOfArt 
WHERE Staff.empID=WorkOfArt.Curator
and Staff.StaffLevel<7
group by Staff.empID;

Select Staff.empID, count(WorkOfArt.HelpingCurator) as HelpingCuratorTotal
FROM Staff, WorkOfArt 
WHERE Staff.empID=WorkOfArt.HelpingCurator
and Staff.StaffLevel<7
group by Staff.empID;

我创建了这两个查询,它们工作得很好,但是我需要在一个查询中使用它。

我试过了:

Select Staff.empID, count(WorkOfArt.Curator) as CuratorTotal,
COUNT(WorkOfArt.HelpingCurator) as HelpingCuratorTotal
FROM Staff FULL OUTER JOIN WorkOfArt on Staff.empID=WorkOfArt.Curator
and Staff.empID=WorkOfArt.HelpingCurator
WHERE Staff.StaffLevel<7
group by Staff.empID;

(以及使用左或右外部联接)-这给了我一张带有empID的表,但是在两个count列中只有0-和:

Select Staff.empID, count(WorkOfArt.Curator) as CuratorTotal,
COUNT(WorkOfArt.HelpingCurator) as HelpingCuratorTotal
FROM Staff, WorkOfArt
WHERE Staff.empID=WorkOfArt.Curator
and Staff.empID=WorkOfArt.HelpingCurator
and Staff.StaffLevel<7
group by Staff.empID;

而这只是给我列的名称。

我不知道下一步该怎么做。我试图在google中找到答案,但是我发现的所有解释对我来说都更为先进,因此我无法理解它们……您能帮我吗?提示也很好。

詹姆斯·Z

最简单的方法是在select子句中使用内部select,如下所示:

Select 
  S.empID, 
  (select count(*) from WorkOfArt C where C.Curator = S.empID) 
    as CuratorTotal,
  (select count(*) from WorkOfArt H where H.HelpingCurator = S.empID) 
    as HelpingCuratorTotal
FROM Staff S
WHERE S.StaffLevel<7
group by S.empID;

这样,具有不同角色的行不会引起计算问题。如果表确实很大,或者您有许多不同的角色,则最有可能在WorkOfArt表中首先对项目进行分组的更复杂的查询可能会具有更好的性能,因为这需要读取两次行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将两个SQL查询的结果合并为一个

来自分类Dev

如何将这两个linq查询合并为一个查询?

来自分类Dev

如何将这两个单独的聚合查询合并为一个查询?

来自分类Dev

如何将这两个选择查询合并为一个查询?

来自分类Dev

如何将两个联接查询合并为一个?

来自分类Dev

如何将这两个查询合并为一个?

来自分类Dev

如何将这两个不同的LINQ查询合并为一个?

来自分类Dev

如何将这两个查询合并为一个?

来自分类Dev

如何将两个基于 if-else 的相似查询合并为一个

来自分类Dev

Laravel 如何将两个查询结果合并为一个对象

来自分类Dev

SQL Server CE:如何将两个查询的结果合并为一行?

来自分类Dev

将两个查询合并为一个

来自分类Dev

如何将两个有效的 SELECT 查询合并为一个查询?

来自分类Dev

SQL:将两个查询合并为一个查询

来自分类Dev

sql查询将两个查询合并为一个空行

来自分类Dev

如何将这两个MySQL选择查询合并为一个以防止循环?

来自分类Dev

EF6:如何将两个不同的count()查询合并为一个?

来自分类Dev

如何将以下两个查询合并为一个结果?

来自分类Dev

如何将这2个SQL查询合并为一个SQL查询

来自分类Dev

将两个SQL查询合并为一个

来自分类Dev

将两个SQL查询结果合并为一个结果

来自分类Dev

SQL:将两个计数查询合并为一个

来自分类Dev

将两个SQL查询合并为一个不重复的内容

来自分类Dev

我可以将这两个SQL查询合并为一个吗?

来自分类Dev

如何将两个查询合并为一行查询

来自分类Dev

如何将这两个Lambda合并为一个GroupBy调用?

来自分类Dev

如何将两个或多个Counters合并为一个字典?

来自分类常见问题

如何将两个RMarkdown(.Rmd)文件合并为一个输出?

来自分类Dev

如何将两个图像合并为一个?

Related 相关文章

  1. 1

    如何将两个SQL查询的结果合并为一个

  2. 2

    如何将这两个linq查询合并为一个查询?

  3. 3

    如何将这两个单独的聚合查询合并为一个查询?

  4. 4

    如何将这两个选择查询合并为一个查询?

  5. 5

    如何将两个联接查询合并为一个?

  6. 6

    如何将这两个查询合并为一个?

  7. 7

    如何将这两个不同的LINQ查询合并为一个?

  8. 8

    如何将这两个查询合并为一个?

  9. 9

    如何将两个基于 if-else 的相似查询合并为一个

  10. 10

    Laravel 如何将两个查询结果合并为一个对象

  11. 11

    SQL Server CE:如何将两个查询的结果合并为一行?

  12. 12

    将两个查询合并为一个

  13. 13

    如何将两个有效的 SELECT 查询合并为一个查询?

  14. 14

    SQL:将两个查询合并为一个查询

  15. 15

    sql查询将两个查询合并为一个空行

  16. 16

    如何将这两个MySQL选择查询合并为一个以防止循环?

  17. 17

    EF6:如何将两个不同的count()查询合并为一个?

  18. 18

    如何将以下两个查询合并为一个结果?

  19. 19

    如何将这2个SQL查询合并为一个SQL查询

  20. 20

    将两个SQL查询合并为一个

  21. 21

    将两个SQL查询结果合并为一个结果

  22. 22

    SQL:将两个计数查询合并为一个

  23. 23

    将两个SQL查询合并为一个不重复的内容

  24. 24

    我可以将这两个SQL查询合并为一个吗?

  25. 25

    如何将两个查询合并为一行查询

  26. 26

    如何将这两个Lambda合并为一个GroupBy调用?

  27. 27

    如何将两个或多个Counters合并为一个字典?

  28. 28

    如何将两个RMarkdown(.Rmd)文件合并为一个输出?

  29. 29

    如何将两个图像合并为一个?

热门标签

归档