簡體   English   中英

MAX()函數未按預期工作

[英]MAX() Function not working as expected

我創建了sqlfiddle嘗試嘗試繞過此http://sqlfiddle.com/#!2/21e72/1

在查詢中,我已將max()放在了compiled_date列上,但推薦列仍遇到不正確的情況-我假設需要以某種方式將select語句插入第3行?

我已經嘗試了以下評論者提供的示例,但我想我只需要從基本查詢開始就可以理解這一點。

正如其他人指出的那樣,問題在於某些選擇列既未匯總,也未在group by子句中使用。 大多數DBMS根本不允許這樣做,但是MySQL在某些標准上有點放松...

因此,您需要首先找到每種情況的max(compiled_date) ,然后再找到相應的建議。

select r.case_number, r.compiled_date, r.recommendation
from reporting r
  join (
    SELECT case_number, max(compiled_date) as lastDate
    from reporting
    group by case_number
  ) s on r.case_number=s.case_number
      and r.compiled_date=s.lastDate

感謝您提供sqlFiddle。 但是只給出報告數據。 如果您給我們提供整個表格的樣本數據,我們將不勝感激。

無論如何,您能嘗試一下嗎?

SELECT
    `case`.number,
    staff.staff_name AS ``case` owner`,
    client.client_name,
    `case`.address,
    x.mx_date,
    report.recommendation
FROM
    `case` INNER JOIN (
        SELECT case_number, MAX(compiled_date) as mx_date
        FROM report
        GROUP BY case_number
    ) x ON x.case_number = `case`.number
    INNER JOIN report ON x.case_number = report.case_number AND report.compiled_date = x.mx_date
    INNER JOIN client ON `case`.client_number = client.client_number
    INNER JOIN staff ON `case`.staff_number = staff.staff_number
WHERE
    `case`.active = 1
    AND staff.staff_name = 'bob'
ORDER BY
    `case`.number ASC;

檢查以下查詢:

SELECT c.number, s.staff_name AS `case owner`, cl.client_name, 
       c.address, MAX(r.compiled_date), r.recommendation
FROM case c
INNER JOIN (SELECT r.case_number, r.compiled_date, r.recommendation 
            FROM report r ORDER BY r.case_number, r.compiled_date DESC
           ) r ON r.case_number = c.number
INNER JOIN client cl ON c.client_number = cl.client_number
INNER JOIN staff s ON c.staff_number = s.staff_number
WHERE c.active = 1 AND s.staff_name = 'bob'
GROUP BY c.number
ORDER BY c.number ASC
SELECT
case.number,
staff.staff_name AS `case owner`,
client.client_name,
case.address,
(select MAX(compiled_date)from report where case_number=case.number),
report.recommendation
FROM
case
INNER JOIN report ON report.case_number = case.number
INNER JOIN client ON case.client_number = client.client_number
INNER JOIN staff ON case.staff_number = staff.staff_number
WHERE
case.active = 1 AND
staff.staff_name = 'bob'
GROUP BY
case.number
ORDER BY
case.number ASC

嘗試這個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM