Sql 从表中检索不同的行
Sql 从表中检索不同的行,sql,sql-server,Sql,Sql Server,我有一个table Masterproduct,我只想为每个“ProductDivisionID”检索一行,并检查特定“ProductDivisionID”的任何行的“StatusID”是否为2如果我正确阅读了您的问题,您需要一个productDivisionID值列表,用于任何行的StatusID为2的分区。在这种情况下,您可以在分区上使用聚合,并计算出现的次数: SELECT productDivisionID FROM Masterproduct GROUP BY productDivis
我有一个table Masterproduct,我只想为每个“ProductDivisionID”检索一行,并检查特定“ProductDivisionID”的任何行的“StatusID”是否为2如果我正确阅读了您的问题,您需要一个
productDivisionID
值列表,用于任何行的StatusID
为2
的分区。在这种情况下,您可以在分区上使用聚合,并计算出现的次数:
SELECT productDivisionID
FROM Masterproduct
GROUP BY productDivisionID
HAVING SUM(CASE WHEN StatusID = 2 THEN 1 ELSE 0 END) > 0
或者更简单,只需使用WHERE
条件删除StatusID
不是2
的记录,然后选择DISTINCT
即可获得分区列表:
SELECT DISTINCT productDivisionID
FROM Masterproduct
WHERE StatusID = 2
这将为每个productDivisionID提供列productID作为最大值和列StatusID作为2
SELECT productDivisionID, MAX(productID) as productID , MAX(StatusID) As StatusID
FROM Masterproduct
WHERE StatusID = 2
GROUP BY productDivisionID
如果您希望产品id也在选择中,那么您可以使用GROUP BY和聚合功能来满足它无法满足的需求,如果您发布输出数据,那么我可以适当地提出建议。