【问题标题】:sql group by find all combinations of two columns distinct valuessql group by 查找两列不同值的所有组合
【发布时间】:2014-08-05 20:22:29
【问题描述】:

我有下表

ORDID  EMPID     ITEMCOST       TIME
-------------------------------------    
10023 B2690          675       1992
10024 C3467         8078       1992
10025 B2690        15481       1992
10026 C5621        22884       1992
10027 B2109        30287       1992
10030 B3297        52496       1993
10031 C3467        59899       1993
10032 F5621        67302       1993
10033 G3467        74705       1993

等等很多行.....

我正在尝试找出每年购买某些物品的 empid。 换句话说,想找出该表中每一年都存在的empid。

BTB 我正在使用 Oracle 11g Express。

提前致谢。

【问题讨论】:

  • 向我们展示预期的输出

标签: sql oracle oracle11g


【解决方案1】:

您可以使用 having 子句执行此操作,在该子句中,您将每个 empid 的不同年份数与数据中不同年份的数量进行比较:

select empid
from followingtable
group by empid
having count(distinct time) = (select count(distinct time) from followingtable);

【讨论】:

    【解决方案2】:

    下面的查询也可以。

    SELECT TAB.EMPID FROM
    (
         SELECT A.EMPID, COUNT(DISTINCT A.TIME) YEARCOUNT  FROM MY_TABLE A GROUP BY EMPID
    ) TAB
    
     WHERE TAB.YEARCOUNT = (SELECT COUNT(DISTINCT B.TIME) FROM MY_TABLE B)
    

    【讨论】:

    • 对不起..这是我更改表名的错误。它的工作。谢谢
    猜你喜欢
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    相关资源
    最近更新 更多