子查询返回多个值如何处理它

时间:2010-11-18 06:02:05

标签: sql

我的SQL查询是

  select ID, ModuleID,
         (SELECT ((CAmount * CPercentage)/100)  FROM Table1 ) as Percentage 
    from Table1 
order by ModuleID ;

如果只有一个值,它可以正常工作,但如果有多个值,我会收到错误。如何处理它,我希望表中的所有金额都转换为相应的百分比,请帮助。

5 个答案:

答案 0 :(得分:2)

你可以使用

SELECT TOP 1 ((CAmount * CPercentage)/100)  FROM Table1 

但这取决于你的内涵......

答案 1 :(得分:0)

或者...

  select ID, ModuleID,
         (SELECT ((SUM(CAmount) * SUM(CPercentage))/100)  FROM Table1 ) as Percentage 
    from Table1 
order by ModuleID ;

这将成功处理多个值。

答案 2 :(得分:0)

令我觉得有点奇怪,你的子查询使用与主查询相同的表。看起来您正在尝试获取每个模块的百分比,因此获取整个表的百分比可能是错误的结果。

除非我误解你的意图,否则我希望这是正确的查询:

SELECT ID, ModuleID, SUM((CAmount * CPercentage)/100) AS Percentage 
FROM Table1 
ORDER BY ModuleID

答案 3 :(得分:0)

如果要计算每条记录的值,则根本不需要子查询:

select ID, ModuleID, (CAmount * CPercentage) / 100 as Percentage 
from Table1
order by ModuleID

答案 4 :(得分:0)

您可以将此拆分用于“,”

(选择不同         DocumentList = stuff((SELECT distinct(','+ CCD2.document_filename +'')         来自callcenter_documents CCD2
        WHERE document_answerid = AnswerID         对于来自callcenter_documents CCD1的XML路径('')),1,2,'')         WHERE document_answerid = AnswerID)AS document_filename