2016-07-17 4 views
-1
select t1.d as Date,t1.S AS StoreNo ,t1.Cash,N3.price,(N3.price-t1.Cash)as Totalsale,ISNUll(t2.gift,0)as Card,ISNULL(t3.coupon,0) as couup 
from 
(Select Date as d,StoreNo as S,SUM(DayTotalAmt)Cash 
    from POS_FinTtl where (SerialNo like '23') 
    group by StoreNo,SerialNo,Date) t1 

Join (Select Date as d,StoreNo as S, SUM(DayTotalAmt)gift 
     from POS_FinTtl where (SerialNo like '31') 
     group by StoreNo,SerialNo,Date) t2 On t1.d =t2.d and t1.S = t2.S 
join (Select Date as d,StoreNo as S, SUM(DayTotalAmt)coupon 
     from POS_FinTtl where (SerialNo like '30') 
     group by StoreNo,SerialNo,Date)t3 On t2.d =t3.d and t2.S = t3 
Left join (Select BuyDate as d,StoreNo as S ,Sum(SalePrice)as price 
      from POS_TtlTran where StoreNo = 467 
      GROUP BY StoreNo,BuyDate) As N3 
     On N3.d = t1.d and N3.S = t1.S 
     Where (N3.S = 467) AND (N3.d >= '6/01/2015') AND (t1.d <= '6/30/2015') 



Result 

Date  StoreNo Cash price Totalsale Card couup 

2015-06-01 467  14860 88145 73285 78334 2000 

2015-06-05 467  23032 76380 53348 40456 19000 

2015-06-07 467  44225 133737 89512 95205 5000 

2015-06-14 467  78134 110940 32806 30677 11000 

2015-06-21 467  76234 166070 89836 97114 6000 

2015-06-23 467  19844 46221 26377 29072 1000 

2015-06-28 467  91165 127911 36746 40974 6000 

しかし、日付2015-06-02 couupの値は0ですが、テーブルから抽出するのではなく値として他の列を抽出します。選択クエリでnull値を回避し、テーブルにない選択クエリでその値を0に置き換える方法はありますか?

+1

フォーマットルールに従わなかったため、あなたの質問はひどくフォーマットされています。ヘルプリンクを使ってそれらを見ることができます。また、質問を再フォーマットしてより良いものにすることもできます。 – MAP

答えて

0

条件付き集計を使用する必要があります。基本的なクエリは次のとおりです。私はかなり日付の算術にどのように適合するか従わない

Select Date as d, StoreNo as S, 
     SUM(case when SerialNo like '23' then DayTotalAmt else 0 end) as cash, 
     SUM(case when SerialNo like '31' then DayTotalAmt else 0 end) as gift, 
     SUM(case when SerialNo like '30' then DayTotalAmt else 0 end) as coupon, 
     SUM(case when StoreNo = 467 then SalePrice else 0 end) as price 
from POS_FinTtl 
group by StoreNo, Date; 

- 個々case文の中ですべての値以上に適用するかwhere句で。どこに行くにしても、そのような複雑なクエリは必要ありません。

0

使用する数多くのものがあり、それらはすべてmanualです。式IFNULL(var,0)の条件付き置換では、それ以外の場合は0を返します。

+1

COALESCE()もそのようなことをします –

+0

はい、私はいくつかのことがあったと言いました。私は1つしか言及しておらず、OQをマニュアルに照会して、どちらが正しいかを把握しました。 – MAP

+0

ありがとうございます!やってみます – Krish

関連する問題