【发布时间】:2014-02-19 06:39:58
【问题描述】:
我正在尝试查询其中不包含与其他产品具有相同折扣百分比的产品。我也想使用子查询。这是我想出的,但我收到一条错误消息,“子查询返回的值超过 1 个。当子查询遵循 =、!=、、>= 或当子查询用作表达式。”
SELECT ProductName,
(SELECT DiscountPercent
FROM Products
GROUP BY DiscountPercent
HAVING COUNT(DiscountPercent) = 1
)
FROM Products
Fender Stratocaster 30.00
Gibson Les Paul 30.00
Gibson SG 52.00
Yamaha FG700S 38.00
Washburn D10S 0.00
Rodriguez Caballero 11 39.00
Fender Precision 30.00
Hofner Icon 25.00
Ludwig 5-piece Drum Set with Cymbals 30.00
Tama 5-Piece Drum Set with Cymbals 15.00
【问题讨论】:
-
SELECT ProductName, (SELECT DiscountPercent FROM Products P1 where p1.ProductName=p.ProductName GROUP BY DiscountPercent HAVING COUNT(DiscountPercent) = 1) FROM Products P
-
不对。我仍然在 3 个产品上获得 3 个相同的值
-
提供样本数据以获得准确的结果。 select * from (select *,row_number()over partition by(ProductName,DiscountPercent order by ProductName)rn from Products)t4 where rn=1
-
我提供了上面的示例数据
-
你使用的是什么版本的sql server?如果它是 sql server 2012,您可以在查询中检查返回的前一行,例如:min(discount) OVER (ORDER BY [discount] ROWS UNBOUNDED PRECEDING。在互联网上查看更多详细信息。如果您有 2005+并且您应该在重复查询中调查的行数不太多