SQL:如何映射具有distinct的表中的两列

时间:2017-10-24 07:25:10

标签: sql oracle

我有如下查询,它在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的其他表中的其他列映射,其中列为idname

我尝试过像

这样的事情
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语法错误。

请帮忙。

谢谢。

1 个答案:

答案 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;