我有如下查询,它在1个月的时间段内获取id
列的数量。
select distinct id, count(1) from table_1 where START_TIME
between add_months(trunc(sysdate,'mm'),-1) and last_day(add_months(trunc(sysdate,'mm'),-1))
group by id;
但是id需要与名为table_2
的其他表中的其他列映射,其中列为id
,name
。
我尝试过像
这样的事情select distinct t1.id, t1.count(1),t2.name from table_1 t1, table_2 t2 where START_TIME
between add_months(trunc(sysdate,'mm'),-1) and last_day(add_months(trunc(sysdate,'mm'),-1)) and t1.id = t2.id
group by t1.id ;
但我最终导致SQL语法错误。
请帮忙。
谢谢。
答案 0 :(得分:1)
使用此:您还需要在Select
子句中包含group by
中的所有列。
SELECT t1.id, COUNT (1), t2.name
FROM table_1 t1 INNER JOIN table_2 t2 ON t1.id = t2.id
WHERE t1.START_TIME BETWEEN ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -1)
AND LAST_DAY (
ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -1))
AND t1.id = t2.id
GROUP BY t1.id, t2.name;