2013-03-01 11 views

Odpowiedz

41

Tak. Możliwe jest :D

SELECT SUM(totalHours) totalHours 
FROM 
     ( 
      select sum(hours) totalHours from resource 
      UNION ALL 
      select sum(hours) totalHours from projects-time 
     ) s 

Jako marginesie, w nazwa_tabeli projects-time musi być ograniczony, aby uniknąć błędów składni. Symbole ograniczników zależą od używanego systemu RDBMS.

+1

Dobra robota. Dziękuję za to. – Rhys

+0

Nie ma za co ": D' –

+0

Co to jest na końcu? Czy to literówka? – Rhys

19

Coś prostego jak można to zrobić za pomocą podzapytania w klauzuli select:

select ((select sum(hours) from resource) + 
     (select sum(hours) from projects-time) 
     ) as totalHours 

Dla takiego prostego zapytania, to taka SUBSELECT jest rozsądna.

W niektórych bazach danych może być konieczne dodanie from dual dla zapytania do kompilacji.

Jeśli chcesz do wyjścia indywidualnie:

select (select sum(hours) from resource) as ResourceHours, 
     (select sum(hours) from projects-time) as ProjectHours 

Jeśli chcesz zarówno i sumę, podzapytanie jest przydatny:

select ResourceHours, ProjectHours, (ResourceHours+ProjecctHours) as TotalHours 
from (select (select sum(hours) from resource) as ResourceHours, 
      (select sum(hours) from projects-time) as ProjectHours 
    ) t 
+0

Podoba mi się to rozwiązanie, ponieważ działa ono dla dodawania i odejmowania – csharpsql

10

UNION ALL raz, agregują raz:

SELECT sum(hours) AS total_hours 
FROM (
    SELECT hours FROM resource 
    UNION ALL 
    SELECT hours FROM "projects-time" -- illegal name without quotes in most RDBMS 
    ) x 
+0

nie większość, ale wszystkie ':)' –

+2

@JW .: Ostrożność, ponieważ nie wiem * wszystkie * .. :) –

0

Powtórz dla wielu agregacji li suma ke SELECT (kwota) AS TOTAL_AMOUNT z ( SELECT ilości od table_1 UNION ALL SELECT ilości od table_2 UNION ALL SELECT ASSURED_SUM OD table_3 .... )

-1

Jeśli chcesz dokonać wielu operacji użyj:

select (sel1.s1+sel2+s2) 

(select sum(hours) s1 from resource) sel1 
join 
(select sum(hours) s2 from projects-time)sel2 
on sel1.s1=sel2.s2 
Powiązane problemy