2017-12-16 13 views
0

こんにちは、私はSQLクエリを持っていて、私の1つの行を数えません。あなたはSpendと呼ばれる、あなたはフィドルでそれを見ることができます。私のコードで何が間違っていますか? 私はちょうど私がフィドルhttp://sqlfiddle.com/#!9/3623b1/2私のSQLクエリで何が問題ですか?グループ化

あなたは私を助けてもらえを作成している

Month ID GOT SPEND 
1  1 100 50 
2  1 500 200 
1  2 200 50 

基本的なテーブルが必要ですか?

select 
    keliones_lapas.Vairuot_Id, 
    MONTH(keliones_lapas.Data_darbo), 
    sum(keliones_lapas.uzdarbis) as Got, 
    coalesce(Suma, 0) AS Spend, 
    (sum(keliones_lapas.uzdarbis) - coalesce(Suma, 0)) Total 
from keliones_lapas 
    left join (
     select Vairuotas, 
       MONTH(Data_islaidu) as Data_islaidu, 
       sum(Suma) as Suma 
    from islaidos 
    group by Vairuotas, MONTH(Data_islaidu)) islaidos 
    on keliones_lapas.Vairuot_Id = islaidos.Vairuotas 
    and MONTH(keliones_lapas.Data_darbo) = MONTH(islaidos.Data_islaidu) 
group by keliones_lapas.Vairuot_Id, MONTH(keliones_lapas.Data_darbo), Suma 
order by keliones_lapas.Vairuot_Id, MONTH(keliones_lapas.Data_darbo); 

答えて

1

TRY THIS:ここ

は、クエリであなたは再びそれが NULLを返すと、任意の月と一致していないので、加入月から取得するために MONTHを使用して、あなたのサブクエリで月既に取っています keliones_lapas

SELECT 
    keliones_lapas.Vairuot_Id, 
    MONTH(keliones_lapas.Data_darbo), 
    SUM(keliones_lapas.uzdarbis) AS Got, 
    COALESCE(Suma, 0) AS Spend, 
    (SUM(keliones_lapas.uzdarbis) - COALESCE(Suma, 0)) Total 
FROM keliones_lapas 
    LEFT JOIN (
    SELECT Vairuotas, 
      MONTH(Data_islaidu) AS Data_islaidu, --It's already in MONTH 
      SUM(Suma) AS Suma 
    FROM islaidos 
    GROUP BY Vairuotas, MONTH(Data_islaidu)) islaidos 
    ON keliones_lapas.Vairuot_Id = islaidos.Vairuotas 
    AND MONTH(keliones_lapas.Data_darbo) = Data_islaidu --No need to use MONTH or `vice versa` 
GROUP BY keliones_lapas.Vairuot_Id, MONTH(keliones_lapas.Data_darbo), Suma 
ORDER BY keliones_lapas.Vairuot_Id, MONTH(keliones_lapas.Data_darbo) 
+0

あなたは最高です!おかげでそれは働いた!!もし私が年を追加したいのであれば、それはうまくいくのだろうか? –

+0

もちろん、その場合、すなわち、「月」または「年」または「日」または「任意の日付組合せ」でも機能しなければならない。任意の合併症については、メッセージを残すことができます。 – Susang

+0

私はここに新しいです、どのように正確に私はあなたにメッセージを残すことができますか? :) –