2013-03-01 17 views
17

Şu anda aşağıda iki seçim komutu var. Yapmak istediğim, sonuçları koddaki değişkenlerden ziyade SQL sorgusunda bir araya getirmek. Aynı sorguda iki seçim komutunun sonuçları nasıl eklenir

select sum(hours) from resource; 
select sum(hours) from projects-time; 

aynı SQL ve çıkış hem sonuçların toplamı hem mümkün mü?

cevap

41

Evet. Bir dipnot düşmek, projects-time yazım hatası kaçınmak için ayrılmış gerekir tabloismi olarak :D

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

mümkündür. Ayırıcı sembolleri kullandığınız RDBMS'ye göre değişir. Bu gibi basit

+1

Güzel iş. Bunun için teşekkürler. – Rhys

+0

hoş geldiniz ': D' –

+0

Sonunda ne var? Bu bir yazım hatası mı? – Rhys

19

şey select fıkrada alt sorgular kullanılarak yapılabilir:

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

bu gibi basit bir sorgu için böyle bir alt seçim makul. Bazı veritabanlarında, derlenecek sorgu için from dual eklemeniz gerekebilir. Eğer her biri ayrı ayrı çıktı istiyorsanız

: kez

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

Bu çözümü beğendim çünkü eklemeye ve çıkarmaya yarayan – csharpsql

10

UNION ALL kez bir araya toplar:: Her ikisine de ve toplamı istiyorsanız

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

, bir alt sorgu kullanışlı

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

':)' –

+2

@JW .: Bilmemden beri ihtiyatlı olmak * tüm * .. :) –

0

Çoklu toplamalar için tekrarla li (Table_3 .... GELEN table_1 BİRLİĞİ table_2 BİRLİĞİ TÜM SEÇ ASSURED_SUM TÜM SEÇ TUTAR GELEN SEÇ TUTARLA) DAN TOTAL_AMOUNT OLARAK ke SEÇ toplamı (TUTAR) Birden operasyon yapmak istiyorsanız

-1

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 
İlgili konular