一个SQL语句,用于根据明细表中的匹配记录对主表中的记录进行计数?

好奇的

我有以下主表,称为主表和示例数据

ID---------------Date
1                2014-09-07
2                2014-09-07
3                2014-09-08

以下详细信息表称为“详细信息”

masterId-------------Name
1                    John Walsh
1                    John Jones
2                    John Carney
1                    Peter Lewis
3                    John Wilson

现在,我想找出主记录(在“日期”列上分组)的计数,这些主记录的对应明细记录的名称为“ John”。

我无法弄清楚如何为该作业编写单个SQL语句。

**请注意,需要加入才能找到要计数的主记录。但是,这样的连接会创建重复的主记录以供计数。在对主表的“日期”列进行分组时,我需要从计数中删除此类重复记录。

正确的结果应该是:

count:           grouped on Date column
2                2014-09-07
1                2014-09-08

**

谢谢并恭祝安康!

埃里亚斯

该答案假定以下条件

  • 名称字段始终为FirstName LastName
  • 您只一次寻找John名字。搜索条件将有所不同,取决于您的需求

SELECT Date, Count(*)
FROM tblmaster 
INNER JOIN tbldetails ON tblmaster.ID=tbldetails.masterId 
WHERE NAME LIKE 'John%'
GROUP BY Date, tbldetails.masterId

我们在这里所做的是在字符串搜索中使用通配符,说“寻找任何长度后跟的字符的约翰”。

另外,这是一种基于我们正在使用的方法创建表变量的方法

DECLARE @tblmaster as table(
ID  int,
[date] datetime
)

DECLARE @tbldetails as table(
masterID  int,
name varchar(50)
)

INSERT INTO @tblmaster (ID,[date])
VALUES
(1,'2014-09-07'),(2,'2014-09-07'),(3,'2014-09-08')

INSERT INTO @tbldetails(masterID, name) VALUES
(1,'John Walsh'),
(1,'John Jones'),
(2,'John Carney'),
(1,'Peter Lewis'),
(3,'John Wilson')

根据下面的所有注释,此SQL语句笨拙的应该可以解决问题。

SELECT date,count(t1.ID) FROM @tblmaster mainTable INNER JOIN 
( 
    SELECT ID, COUNT(*)  as countOfAll
    FROM @tblmaster  t1
    INNER JOIN @tbldetails t2 ON t1.ID=t2.masterId 
    WHERE NAME LIKE 'John%' 
    GROUP BY id) 
as t1 on t1.ID = mainTable.id 
GROUP BY mainTable.date

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在主表中查找与SQL Server中另一个表中的记录匹配的记录

来自分类Dev

删除明细表中的记录后更新主表的过程中出现错误

来自分类Dev

将主表和明细表合并为一个表

来自分类Dev

将主表和明细表合并为一个表

来自分类Dev

对记录在另一个表中的票数符合条件的记录进行计数

来自分类Dev

对记录在另一个表中的投票满足条件的记录进行计数

来自分类Dev

明细表中INSERT语句处的MySql约束错误

来自分类Dev

SQL维护另一个表中相关记录的最新计数

来自分类Dev

根据另一个表中的记录值将记录插入表中

来自分类Dev

根据另一个表中记录的值将记录插入表中

来自分类Dev

Java根据其他表中的记录显示一个表中的记录

来自分类Dev

如何使用SQL创建主表/明细表的摘要视图

来自分类Dev

SQL查询-从一个表中选择全部,在另一个表中匹配记录

来自分类Dev

根据另一个表中的记录过滤一个表中的记录

来自分类Dev

如何选择明细表条目作为主表中的列?

来自分类Dev

根据SQL中的下一个和上一个记录进行复杂的排序

来自分类Dev

根据另一个表中的列在表中插入记录(在Oracle SQL Developer中)

来自分类Dev

MS-Access 2016 - 根据另一个表中的记录更新记录

来自分类Dev

SQL-根据另一个表中给出的匹配值在一个表中进行选择

来自分类Dev

PL / SQL约束:表中总是一个记录

来自分类Dev

SQL Union更喜欢一个表中的记录?

来自分类Dev

表中的多个记录中的一个记录

来自分类Dev

从一个表中选择所有记录并从另一个表中匹配记录

来自分类Dev

Oracle SQL 查询以检索列中的值等于另一个表中的值计数的记录

来自分类Dev

循环遍历临时表中的SQL QUERY记录结果,并根据SQL QUERY结果更新另一个表

来自分类Dev

计算一个表中与另一表中条件匹配的记录

来自分类Dev

两个SQL语句对另一个表中的一列进行计数

来自分类Dev

使用JQuery Easyui的主表/明细表

来自分类Dev

如何考虑报告月份在另一个表中的条目,根据注册时间对记录进行分组?

Related 相关文章

  1. 1

    在主表中查找与SQL Server中另一个表中的记录匹配的记录

  2. 2

    删除明细表中的记录后更新主表的过程中出现错误

  3. 3

    将主表和明细表合并为一个表

  4. 4

    将主表和明细表合并为一个表

  5. 5

    对记录在另一个表中的票数符合条件的记录进行计数

  6. 6

    对记录在另一个表中的投票满足条件的记录进行计数

  7. 7

    明细表中INSERT语句处的MySql约束错误

  8. 8

    SQL维护另一个表中相关记录的最新计数

  9. 9

    根据另一个表中的记录值将记录插入表中

  10. 10

    根据另一个表中记录的值将记录插入表中

  11. 11

    Java根据其他表中的记录显示一个表中的记录

  12. 12

    如何使用SQL创建主表/明细表的摘要视图

  13. 13

    SQL查询-从一个表中选择全部,在另一个表中匹配记录

  14. 14

    根据另一个表中的记录过滤一个表中的记录

  15. 15

    如何选择明细表条目作为主表中的列?

  16. 16

    根据SQL中的下一个和上一个记录进行复杂的排序

  17. 17

    根据另一个表中的列在表中插入记录(在Oracle SQL Developer中)

  18. 18

    MS-Access 2016 - 根据另一个表中的记录更新记录

  19. 19

    SQL-根据另一个表中给出的匹配值在一个表中进行选择

  20. 20

    PL / SQL约束:表中总是一个记录

  21. 21

    SQL Union更喜欢一个表中的记录?

  22. 22

    表中的多个记录中的一个记录

  23. 23

    从一个表中选择所有记录并从另一个表中匹配记录

  24. 24

    Oracle SQL 查询以检索列中的值等于另一个表中的值计数的记录

  25. 25

    循环遍历临时表中的SQL QUERY记录结果,并根据SQL QUERY结果更新另一个表

  26. 26

    计算一个表中与另一表中条件匹配的记录

  27. 27

    两个SQL语句对另一个表中的一列进行计数

  28. 28

    使用JQuery Easyui的主表/明细表

  29. 29

    如何考虑报告月份在另一个表中的条目,根据注册时间对记录进行分组?

热门标签

归档