2017-05-31 110 views
0

我似乎在這裏捏了一下......我現在正在做的是在一個select語句查詢中進行計算。問題是...某些ID在另一個表中找不到,但是它們可以在我聲明的表中找到,它是gndtndr。在另一張桌子上找不到的ID是gndsale。我想要做的是,當在gndsale ...上找不到ID時,我只會將其聲明爲0或0.00的值,並將其作爲列名稱DECLARED如果在表中找不到數據字段,則返回值0或0.00 - MySql

我試過這個查詢我心裏在想什麼,但它不工作:c 你能幫我解決嗎?

所顯示的錯誤是:子查詢返回多個1行

這裏是我的查詢:

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

LEFT JOIN與表 'gndsale',然後在case語句檢查該ID是空的該案件返回0. 「案件,當gndsale.id爲空然後0結束」 我認爲這樣可以解決您的問題

+0

WOAH IT WORKED! :DI得到了我的預期結果:) –

+0

這是我的代碼:) (CASE當s.EMPLOYEE爲NULL時,'0'當s.EMPLOYEE爲 時NOT NULL則FORMAT(ROUND(SUM(s.AMOUNT),2)), 0)END)as DECLARED –

相關問題