从表中检索不同的行

时间:2016-09-06 04:44:22

标签: sql sql-server

enter image description here

我有一个表Masterproduct,我想为每个'ProductDivisionID'只检索一行,同时检查特定'ProductDivisionID'的任何行的'StatusID'是否为2

2 个答案:

答案 0 :(得分:1)

如果我正确阅读了您的问题,您需要一个productDivisionID值的列表,其中任何行的StatusID2。在这种情况下,您可以使用聚合而不是分区,并计算出现次数:

SELECT productDivisionID
FROM Masterproduct
GROUP BY productDivisionID
HAVING SUM(CASE WHEN StatusID = 2 THEN 1 ELSE 0 END) > 0

甚至更简单,只需使用WHERE条件删除StatusID不是2的记录,然后SELECT DISTINCT来获取分部列表:

SELECT DISTINCT productDivisionID
FROM Masterproduct
WHERE StatusID = 2

答案 1 :(得分:0)

这为每个productDivisionID

提供了productID作为最大值,StatusID为2
SELECT productDivisionID, MAX(productID) as productID , MAX(StatusID) As StatusID
FROM Masterproduct
WHERE StatusID = 2
GROUP BY productDivisionID