SQL根据一列的多个不同值过滤行

时间:2020-09-11 15:56:35

标签: sql sql-server

给出下表

DECLARE @YourTable TABLE (id int, PLU int, Siteid int, description varchar(50))

INSERT @YourTable VALUES (1, 8972, 2, 'Beer')
INSERT @YourTable VALUES (2, 8972, 3, 'cider')
INSERT @YourTable VALUES (3, 8972, 4, 'Beer')
INSERT @YourTable VALUES (4, 8973, 2, 'Vodka')
INSERT @YourTable VALUES (5, 8973, 3, 'Vodka')
INSERT @YourTable VALUES (6, 8973, 4, 'Vodka')

我试图编写一个查询,该查询将为我提供一个给定的plu值,其中所有行具有多个不同的值。

因此,在上面的示例中,我想返回行1,2,3,因为它们既有'苹果酒'值又有'啤酒'值,plu为'8972'。

我以为“ GROUP BY”和“ HAVING”是最好的选择,但我似乎无法使其正常工作。

SELECT P.PLU, P.Description 
FROM @YourTable P
GROUP BY P.PLU, P.Description
HAVING COUNT(DISTINCT(P.DESCRIPTION)) > 1

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:4)

如果您在描述上进行@anonymous,则不应该GROUP BY进行描述(那样的话,它总是1)。尝试这样的事情:

DISTINCT COUNT