合并两个sql查询选择并计数
您好,我有两个sql查询,我想合并它们 问题1:合并两个sql查询选择并计数,sql,Sql,您好,我有两个sql查询,我想合并它们 问题1: Select TableA.Name, TableB.Date from TableA, TableB where ID = ID_used; 问题2: SELECT count(Date) FROM (SELECT DISTINCT Date FROM TableA, TableB group by Date; 我试过: Select TableA.Name, TableB.Date from Tabl
Select TableA.Name, TableB.Date
from TableA, TableB
where ID = ID_used;
问题2:
SELECT count(Date)
FROM (SELECT DISTINCT Date
FROM TableA, TableB
group by Date;
我试过:
Select TableA.Name, TableB.Date
from TableA, TableB
where ID=ID_used inner join (SELECT count(Date)
FROM (SELECT DISTINCT Date
FROM TableA, TableB
group by Date)
但它在联合查询中给出了语法错误
我需要的结果是:姓名、计数结果
有什么想法吗
测试数据:
TableA
---------------------
Name ID
---------------------
John 1001
Peter 1002
TableB
-----------------------
Date ID_used
-----------------------
2015.05.01.AM 1001
2015.05.01.AM 1001
2015.05.01.AM 1002
2015.05.01.PM 1001
2015.05.01.PM 1001
2015.05.01.PM 1002
2015.05.01.PM 1002
2015.05.02.PM 1002
结果必须是:
John 2
Peter 3
在列名之前使用tablename
Select TableA.Name,TableB.Date from TableA, TableB where ID=ID_used;
据我所知,你需要的是这样的东西: 虽然我不确定,因为您没有添加测试数据和预期结果 选择t1.名称,t2.日期, 选择countdate 从中选择不同的日期 从表A到表B 按日期分组为日期计数 来自表1 加入表B t2 在t1.ID=t2.ID\u上使用 更新:我想这就是你想要的: 编辑:我在ms access 2010中尝试了以下操作: 注意:我无法使用关键字Date作为列名,因此改为mydate
select t1.id, t1.name, count(t2.mydate) as datecount
FROM TableA t1,
(SELECT Distinct id_used,mydate
FROM TableB) t2
WHERE t1.id = t2.id_used
GROUP by t1.id,t1.name
这是可行的,但我不建议在没有join或on关键字的情况下使用join,因此这里有一个可读性更好且也有效的方法:
select t1.id, t1.name, count(t2.mydate) as datecount
FROM TableA t1
INNER JOIN (
SELECT Distinct id_used,mydate
FROM TableB) t2
ON t1.id = t2.id_used
GROUP by t1.id,t1.name
这将返回表A中每个名称的表B中不同日期的计数:
Select a.Name, COUNT(DISTINCT b.Date)
from TableA AS a JOIN TableB AS b
ON ID=ID_used
group by a.Name
你能展示一些数据和预期结果吗?查询2在执行GROUP BY之前生成一个交叉联接。在总共有多少个目标日期的情况下,结果中的每一行是否需要相同的结果?提示:计数和计数。数字必须匹配!我想计算列中每个名字的日期。计数很有效,但只是为了一个名字。这就是我尝试合并的原因。最终目标是将结果提交给listJeremy C。目标是获得ID的每个名称/不同日期。。我将编辑这个问题,并给出一些示例数据。谢谢。但是sql测试在“From”语法中写了一些错误,可能在子查询中,您在发布子查询之前测试过它吗?它返回数据了吗?你可以设置一些测试数据吗?我只是阅读了你的编辑,这可能不是你需要的。你的测试数据清楚地表明,我的答案是无用的,它实际上可能比我想象的更简单。2015.05.01.AM是字符串格式,因为-如果日期小于12,那么数据将是2015.05.01.AM。12-14:00之间禁止进入。在这段时间之后,数据将是2015.05.01.PM,我可以更轻松地处理入口,我不需要从2015.05.01转换。00-12:00至2015.05.01.AM。这将如何解决原始问题?甚至不谈论使用旧式连接,在where条件和其他问题中不使用别名。在编辑他的问题之前,我将我的建议发布在了上。现在我的答案是不相关的,因为问题被更改了..是的,他是对的,我的问题第一次是错的Syntax error在查询表达式'countdistinct b'中缺少运算符。date‘会有什么问题?@Zoltan:MS Access不支持不同的聚合,请尝试Jeremy C.的答案instead@Zoltan:你的Access版本是什么?@Zoltan:似乎Access需要内部关键字:-dnoeth-Jeremy C对内部联接的回答是有效的,但对名称的回答是无效的,因为聚合。你知道我怎么也能得到这个名字吗?
Select a.Name, COUNT(DISTINCT b.Date)
from TableA AS a JOIN TableB AS b
ON ID=ID_used
group by a.Name