2015-11-14 57 views
0

创建查询来获取我的货在我的数据库如下图所示SQL服务器 - 选择在另外一个选择了错误

SELECT 
    Goods.GoodsID ,Max(Price) 
    ExistNumber AS ExistNumber , 
    (SELECT p.ValueText 
    FROM STR.GoodsProperties gp 
    INNER JOIN PRP.Properties p ON p.PropertyID = gp.PropertyID 
    WHERE NodeText LIKE '/40/%' 
     AND gp.GoodsID = Goods.GoodsID) AS Color 
FROM  
    STR.Goods 
GROUP BY 
    Goods.GoodsID, ExistNumber; 

该查询拿到货与他们existnumber货物的颜色属性, 现在当我运行此查询我得到这个错误:

Msg 512, Level 16, State 1, Line 13
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

此错误是由于在某些货物造成有两个Color,我想获得两行此产品

+1

为什么GROUP BY没有使用聚合函数?为什么不是简单的SELECT DISTINCT呢? – jarlh

回答

0

请检查这个查询

SELECT Goods.GoodsID , 
     ExistNumber AS ExistNumber , 
     Prop.ValueText AS Color 
FROM STR.Goods 
     INNER JOIN (SELECT gp.GoodsID , 
          p.ValueText 
        FROM STR.GoodsProperties gp 
          INNER JOIN PRP.Properties p ON p.PropertyID = gp.PropertyID 
        WHERE NodeText LIKE '/40/%' 
        ) Prop ON Prop.GoodsID = Goods.GoodsID 
GROUP BY Goods.GoodsID , 
     ExistNumber , 
     Prop.ValueText; 
+0

为什么GROUP BY在没有使用聚合函数时?为什么不是简单的SELECT DISTINCT呢? – jarlh

+0

我想问题查询有更多的列,其中包含聚合函数 –