2013-02-27 40 views
1
SELECT a.agent, a.talktime, a.percentclosed,COALESCE(COUNT(b.dealamount),0),COALESCE(SUM(b.dealamount),0) , b.dealdate 
FROM closers a 
LEFT JOIN deals b ON a.agent = b.agent 
WHERE b.dealdate IS NULL OR YEARWEEK(b.dealdate) = YEARWEEK(NOW()) 
GROUP BY a.agent 
ORDER BY COALESCE(SUM(b.dealamount) , 0) DESC 

任何人可以幫助我解決這個查詢我知道它的混亂,但即時通訊新本,MySQL查詢適用於當前星期沒有下一個

也能正常工作當前一週,但如果我添加+1模擬未來一週大家誰擁有交易之前一週爲不顯示,

感謝,

約翰,

圖像查詢的

+0

你在哪裏添加+1如何? – fancyPants 2013-02-27 16:00:13

+0

請顯示您的代碼,您是結果,以及您要查找的內容。 – Hituptony 2013-02-27 16:05:10

回答

1

WEEKOFYEAR在這種情況下不好,因爲它會在年底結束。你應該使用YEARWEEK()。

WHERE b.dealdate IS NULL OR YEARWEEK(b.dealdate) = YEARWEEK(NOW()) +1 
+0

我試過了,但仍然只有沒有交易的代理商顯示我需要每個人都顯示,即使他們本週沒有交易 – 2013-02-27 15:59:34

+1

這與您要求的不同。如果您需要顯示每個代理商,請在一週內刪除該條件。指定您的查詢應執行的操作。 – Ghigo 2013-02-27 16:03:12

+0

我只顯示本週的當前交易,目標是每個經紀人有0個交易,並且他們都顯示當前周 – 2013-02-27 16:06:35

1
WHERE b.dealdate IS NULL OR WEEKOFYEAR(b.dealdate) = WEEKOFYEAR(date_add(NOW(), interval 1 week)) 

使用mysql的間隔功能,以及DATE_ADD或DATE_SUB功能

Reference

+0

我試過得到相同的結果,我需要它是當前星期一到星期天而不是最後7天 – 2013-02-27 16:02:36

+0

我沒有改變任何東西...... – Hituptony 2013-02-27 16:38:05

1

得到它的工作!

SELECT a.agent, a.talktime, a.percentclosed, COALESCE(COUNT(b.dealamount) , 0)  ,COALESCE(SUM(b.dealamount) , 0) , b.dealdate 
FROM closers a 
LEFT JOIN deals b ON a.agent = b.agent 
AND WEEKOFYEAR(b.dealdate) = WEEKOFYEAR(NOW()) 
WHERE b.dealdate IS NULL 
OR WEEKOFYEAR(b.dealdate) = WEEKOFYEAR(NOW()) 
GROUP BY a.agent 
ORDER BY COALESCE(SUM(b.dealamount) , 0) DESC 
LIMIT 0 , 30 
相關問題