Select 条记录在一列中具有相同的值而在另一列中具有不同的值

Select records that have same value in a column and different in another

在我的 table INVENTORY 中有 3 列 varchar 代码、版本、描述。 例如

code  || version || description
--------------------------
AS100 ||   01    || description
AS100 ||   02    || description
AS100 ||   02    || description
AS100 ||   02    || description
AS200 ||   01    || description
AS300 ||   01    || description
AS300 ||   01    || description

我想 select 所有具有相同产品和多个版本的产品。在上面的 table 中,此查询将返回:

AS100 - 01 - description
AS100 - 02 - description

我尝试使用 HAVING 语句但是我没有得到上面的结果..

例如,我试过这个:

SELECT code, version, Count(*) FROM INVENTORY
GROUP BY version
HAVING Count(*) =1

但它returns所有出现一次的代码。

我在这里创建了一个SQLFIDDLE(我希望它能播放,有时页面会卡住) 我的数据库的一个小转储

CREATE TABLE "INVENTORY" (
    "code" VARCHAR, 
    "version" VARCHAR,
    "description" VARCHAR
)


INSERT INTO INVENTORY (code, version, description) VALUES("AS100", "01", "description");
INSERT INTO INVENTORY (code, version, description) VALUES("AS100", "02", "description");
INSERT INTO INVENTORY (code, version, description) VALUES("AS100", "02", "description");
INSERT INTO INVENTORY (code, version, description) VALUES("AS100", "02", "description");
INSERT INTO INVENTORY (code, version, description) VALUES("AS200", "02", "description");
INSERT INTO INVENTORY (code, version, description) VALUES("AS300", "01", "description");
INSERT INTO INVENTORY (code, version, description) VALUES("AS300", "01", "description");

也许这就是你想要的?

select *, count(*) from (select * from INVENTORY group by code, version)
group by code
having count(*)>1

也就是首先对感兴趣的两列做一个table聚合,然后从这个table中选择至少有两个不同值code的行.