2010-11-19 15 views
0

J'ai 3 vues appelées vQuestion1, vQuestion2, vQuestion3. Chacun a 2 colonnes appelées Outcome et Total.T Sum SQL à partir de vues séparées

La colonne Outcome peut avoir un certain nombre de valeurs telles que "N/A", "Improved", "Not Improved". Chaque résultat a un score total.

vQuestion1    vQuestion2    vQuestion3 
Outcome  Total  Outcome  Total  Outcome  Total 
N/A   12   Improved  10  N/A   5 
Improved  10   Not Improved 20  Improved 13 
Not Improved 4 

Je dois créer un résultat où les totaux sont additionnés pour créer un résultat comme suit:

Total Answers 
Outcome  Total 
N/A   17 
Improved  33 
Not Improved 24 

S'il vous plaît noter que toutes les réponses existent dans chaque question, à savoir Question2 ne pas N /UNE.

Répondre

1

d'abord faire un UNION ALL puis un SUM

Quelque chose comme

SqlServer 2005+

;WITH Vals AS (
     SELECT * 
     FROM vQuestion1 
     UNION ALL 
     SELECT * 
     FROM vQuestion2 
     UNION ALL 
     SELECT * 
     FROM vQuestion3 
) 
SELECT Outcome, 
     SUM(Total) Total 
FROM Vals 
GROUP BY Outcome 

Ou

SELECT Outcome, 
     SUM(Total) Total 
FROM (
      SELECT * 
      FROM vQuestion1 
      UNION ALL 
      SELECT * 
      FROM vQuestion2 
      UNION ALL 
      SELECT * 
      FROM vQuestion3 
     ) Vals 
GROUP BY Outcome 
+0

Merci Astander, je votre deuxième exemple et cela a fonctionné première fois! Très appréciée. – Mitch