2017-05-31 10 views
0

私は今ここにピンチしているようです...私は今、1つのselect文クエリで計算を行っています。問題は...いくつかのIDは別のテーブルには見つかりませんでしたが、私が宣言しているテーブルには、gndtndrがあります。別のテーブルに見つからないIDはgndsaleです。私がしたいのは、IDが見つからない場合です。gndsale ...私はそれを0または0.00の値として宣言し、列名をDECLAREDとして配置します。テーブル内にデータフィールドが見つからない場合は、0または0.00の値を返します。MySql

私は自分の頭にあるものを試しましたが、動作していません: これについてお手伝いできますか?

見せているエラーは次のとおりです。

以下
SELECT g.ID , concat(emp.FIRSTNAME, ' ', emp.LASTNAME) Fullname, 

(CASE 
when (select DISTINCT ID from gndtndr where ID NOT IN (select 
ID from gndsale)) then '0' 
else 
FORMAT(ROUND(SUM(s.AMOUNT), 2),0) 
END) as DECLARED, 

FORMAT(ROUND(SUM(G.amount), 2),0) as CALCULATED, 

FORMAT(ROUND(SUM(G.amount), 2) - ROUND(SUM(S.AMOUNT),2),0) AS `CASH SHORT` 
FROM gndtndr g JOIN emp ON emp.ID = g.ID JOIN gndsale s on 
g.ID=S.ID JOIN adjtime a on a.ID = g.ID group by 
ID 

は、サンプルデータと私の予想結果

GNDSALE表である:サブクエリは複数行

はここに私のクエリの返します

gndsale table

GNDTNDR表

gndtndr table

期待される結果

expected result

+0

サンプルデータと期待される出力を与える – Utsav

答えて

1

左の表 'gndsale' で参加して、idのcase文のチェックににnullでありますその場合は0を返します。 "gndsale.idがnullの場合、0の場合" これはあなたの問題を解決すると思う。

+0

WOAH IT WORKED! :DIは私の期待した結果を得ました:) –

+0

ここに私のコードです:) (s.EMPLOYEEが0のときにs.EMPLOYEEが のときにFORMAT(ROUND(SUM(s.AMOUNT)、2) 0)END)as DECLARED –

関連する問題