2010-11-18 3 views
0

My SQL Query estplus de sous-requête retourné 1 valeur comment le gérer

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

Il fonctionne parfaitement s'il n'y a qu'une seule valeur, mais s'il y a plus d'une valeur i obtenir une erreur. comment le gérer, je veux que tout le montant de la table soit converti en son pourcentage correspondant s'il vous plaît aider.

+0

Quelle base de données utilisez-vous? –

+0

Qu'essayez-vous réellement de faire *? Votre question nous dit comment vous essayez de le faire, mais pas ce que vous essayez de réaliser ... –

Répondre

2

vous pouvez utiliser

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

Mais cela dépend de votre intensions ...

0

Ou ...

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

qui va gérer avec succès plusieurs valeurs.

0

Cela me semble un peu étrange que votre sous-requête utilise la même table que la requête principale. Il semble que vous essayez d'obtenir le pourcentage pour chaque module, donc obtenir le pourcentage pour l'ensemble de la table pourrait être le mauvais résultat.

À moins que je suis malentendu votre intention, j'attendre que ce soit la requête correcte:

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

Si vous voulez calculer la valeur pour chaque enregistrement, vous n'avez pas besoin d'un sous-requête du tout:

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

Vous pouvez utiliser cette scission avec ""

(SELECT distinct DocumentList = substance ((SELECT distinct (' '+ CCD2.document_filename +'') de callcenter_documents CCD2
OÙ document_answerid = AnswerID pour chemin XML ('')), 1,2, '') de callcenter_documents CCD1
OÙ document_answerid = AnswerID) AS document_filename

Questions connexes