我有兩張表,一張是任務列表。每個任務(行)由唯一一對story_id
和pos_id
(銷售點ID)指定,幷包含日期last_completed
。另一張表是priority
號碼的POS清單。如何在SUM中使用CASE中的WHERE子句?
這就是我需要:我會打電話給每個任務x
包括自去年完成由它的POS優先數除以時間量。我需要所有故事POS的每個故事的所有x
的總和。
最重要的是,一些任務從未完成,所以last_completed
是NULL
;對於這些任務,我想設置x
分至10
這是我試過,但我得到一個錯誤的WHERE
:
SELECT t.story_id, SUM(
CASE
WHEN t.last_completed IS NULL THEN 10
ELSE DATEDIFF(NOW(), t.last_completed)/p.priority
END
WHERE t.pos_id = p.id) AS weeks
FROM test_task t, test_pos p
GROUP BY story_id;
我也試過在同一行的WHERE
條款ELSE
,但那也沒用。
有誰能告訴我如何關聯priority
與日期CASE
裏面的SUM
?
我們預計這將產生一個錯誤,'WHERE'條款是無效的,你擁有它; WHERE子句遵循'FROM'子句。我強烈建議您拋棄連接操作的舊式逗號語法,並改爲使用JOIN關鍵字,並將連接謂詞從WHERE子句移動到ON子句。 (請參閱Gordon的答案) – spencer7593 2014-09-19 15:36:10
謝謝。穆里尼克提出了第一點,而且更有禮貌。不知道你爲什麼批評我爲「連接操作的舊式逗號語法」。 – JohnK 2014-09-19 17:48:36