Oracle SQL查询,用于组合多个表中的列,并使用group by进行计数

时间:2016-06-27 13:15:06

标签: sql oracle

Table T1:
Column T1A
Column insertdate (TIMESTAMP(6), indexed)
Column T1B

Table T2:
Column T1B
Column T2name
Column T2C

Table T3:
Column T2C
Column T3name

Select T1A, count(0) 
from T1 
where (insertdate between trunc(sysdate) - 2 and trunc(sysdate) - 1) group by T1A;

为每个T1A值生成T1中昨天记录的计数。

Select tbl2.T2name, tbl3.T3name 
from T2 tbl2, T3 tbl3 
where tbl2.T1B in (select tbl1.T1A from T1 tbl1 
                   where (insertdate between trunc(sysdate) - 2 and trunc(sysdate) - 1)
                   group by T1A) 
and tbl2.T2C = tbl3.T2C;

返回T2和T3中映射到T1A列中值的列的名称。

现在我想要将两者结合起来,以便第一个查询包含名称而不是对读者无意义的关键字段(T1A):报告T2name,T3name,T1中每个T1A值的昨天记录数。 / p>

显然那些不是真正的表名和列名。如果我在语法中犯了错误,请忽略,因为它没有按原样运行。所有建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

SELECT tbl2.T2name, tbl3.T3name, count(*)
FROM T1 tbl1, T2 tbl2, T3 tbl3 
WHERE tbl1.T1B = tbl2.T1B
AND tbl2.T2C = tbl3.T2C
AND tbl1.insertdate >= trunc(sysdate) - 2
AND tbl1.insertdate < trunc(sysdate) - 1
GROUP BY tbl2.T2name, tbl3.T3name;