2012-01-31 9 views
2

私はそれが可能だと考えるのはばかばかしいですが、これらの2つのクエリをマージする方法はありますか?これらの2つの簡単なクエリをマージする方法はありますか

クエリ#1:

select distinct 
    count(l.lease_id) as 'Count_Transactions_ALL', 
    sum(l.net_area) as 'Total_Area_ALL' 
from 
    lease_deal.lease l 
where 
    l.deal_approved_date >= @dateFrom 
    and l.deal_approved_date <= @dateTo 
    and l.lease_status in(@leaseStatus) 

クエリ#2:

select distinct 
    count(l.lease_id) as 'Count_Transactions_NEW', 
from 
    lease_deal.lease l 
where 
    l.deal_approved_date >= @dateFrom 
    and l.deal_approved_date <= @dateTo 
    and l.lease_status in(@leaseStatus) 
    and l.negotiation_type = 'NEW' 

私の所望の出力は次のようになります

Count_Transactions_ALL、Total_Area_All、Count_Transactions_NEW

のx、y、zの

+0

あなたがそれらを "マージ" によって達成するために何をしようとしているの?クエリ内に2つのサブクエリとして書くことができ、1つの結果セットを返すことができます。 –

+0

@ zespri教育的な好奇心 – Codingo

答えて

8

はこのような何か試してみてください:

select 
    count(l.lease_id) as 'Count_Transactions_ALL', 
    sum(l.net_area) as 'Total_Area_ALL', 
    sum(case l.negotiation_type 
     when 'NEW' then 1 else 0 end) 
    as Count_Transactions_NEW 
from 
    lease_deal.lease l 
where 
    l.deal_approved_date >= @dateFrom 
    and l.deal_approved_date <= @dateTo 
    and l.lease_status in(@leaseStatus) 
+0

あなたの質問には「何か」がありますか?複数の行が返されるようなことはありませんか? –

+0

これは完璧です、ありがとうございます。そのような問題に近づくことは決して考えていません。 – Codingo

+0

@zespritouchésir、今すぐ固定 – Codingo

1
select distinct 
     count(l.lease_id) as 'Count_Transactions_ALL', 
     sum(l.net_area) as 'Total_Area_ALL', 
     sum(if(l.negotiation_type = 'NEW', 1, 0)) as 'Count_Transactions_New' 
    from 
     lease_deal.lease l 
    where 
     l.deal_approved_date >= @dateFrom 
     and l.deal_approved_date <= @dateTo 
     and l.lease_status in(@leaseStatus) 
+0

これは動作しません。 'IF'は自動的に' SUM'を何も実行しません。つまり、何も集約しないということです。 –

+0

オハイオ州私は今それを参照してください –

+0

@KenWhite方法について今? –

関連する問題