列交点

时间:2016-09-30 14:19:58

标签: sql plsql

假设我有一张像

这样的表格
hljs.highlightBlock(myDiv);

我希望通过SQL查询从PROD列的每个代码获取UNIT列的值的交集。表中的产品数量是可变的,但我需要将UNIT与所有产品相交。 对于我的示例,结果表将是一个包含单行的表,因为PROD中的所有产品只有一个共同的UNIT:

ID     PROD     UNIT
1    |  100  | X
2   |  100   |  Y
3   |  100   |  Z
4   |  200   |  X
5   |  200   |  Y
6   |  300   |  Y
7   |  300   |  Z

1 个答案:

答案 0 :(得分:1)

SELECT MAX(PROD) as Prod, Unit
FROM
    TableName
GROUP BY
    Unit
HAVING
    COUNT(DISTINCT PROD) = (SELECT COUNT(DISTINCT PROD) FROM TableName)

您需要能够将DISTINCT Count of Products grouped by UnitDISTINCT Count of All Products in the table进行比较。您可以在HAVING子句中使用子查询来完成此任务。

我假设您想要Maximum PROD Id,根据您的结果,如果您想要其他内容,如果您希望所有记录只是将其用作派生表并加入以获得您想要的结果。