我玩過很多不同的查詢,但一直沒有找到正確的語法爲這個項目..我真的希望有人可以理解我的爛攤子。MySQL查詢與集團
我有一個訂單表,每個訂單一行,每行都包含客戶編號,採購訂單編號和訂單日期等信息。採購訂單號碼可以綁定到一個或多個訂單,這是我迷路的地方。我試圖創建一個包含客戶編號,PO#,最早訂單日期和最後一個訂單日期(根據PO#分組)的單個行的查詢。
任何指向正確的方向將非常感謝!
我玩過很多不同的查詢,但一直沒有找到正確的語法爲這個項目..我真的希望有人可以理解我的爛攤子。MySQL查詢與集團
我有一個訂單表,每個訂單一行,每行都包含客戶編號,採購訂單編號和訂單日期等信息。採購訂單號碼可以綁定到一個或多個訂單,這是我迷路的地方。我試圖創建一個包含客戶編號,PO#,最早訂單日期和最後一個訂單日期(根據PO#分組)的單個行的查詢。
任何指向正確的方向將非常感謝!
這將獲得訂單和範圍的東西...
select
o.PONumber,
o.CustomerID,
count(*) as TotalOrders,
min(o.OrderID) as FirstOrder,
min(o.OrderDate) as FirstOrderDate,
max(o.OrderID) as LastOrder,
max(o.OrderDate) as LastOrderDate
from
Orders o
group by
o.PONumber,
o.CustomerID
哇...乾淨,簡單,像魅力一樣工作! – Jimmyb 2012-02-08 20:19:01
試試這個:
SELECT
o1.`customer_number` as 'customer',
o1.`po` as 'po_number',
(
SELECT
MIN(`date`)
FROM
`orders`
WHERE
`id` = o1.`id`
) as 'earliest_date'
FROM
`orders` o1
GROUP BY
o1.`po`
希望有所幫助。
通過做一個子選擇作爲一個列將是一個很大的性能影響,特別是在較大的表上。它要求爲每個ID調用每個SELECT MIN(),而在所有合格記錄中使用標準MIN()/ MAX()。您擁有每個P/O產生相同記錄的組 – DRapp 2012-02-08 19:35:12
SELECT o.custumer, o.po_number, o.order_count, max.max_date, min.min_date
FROM
(
SELECT o.'costumer_number' as 'custumer', o.'po' as 'po_number', count('order_number') as 'order_count'
FROM 'orders' o
GROUP BY o.'costumer_number', o.'po'
) o
INNER JOIN (
SELECT o.'costumer_number' as 'custumer', o.'po' as 'po_number', MAX('order_date') as 'max_date'
FROM 'orders' o
GROUP BY o.'costumer_number', o.'po'
) max ON o.'customrer' = max.'costumer' and o.'po_number' = max.'po_number'
INNER JOIN (
SELECT o.'costumer_number' as 'custumer', o.'po' as 'po_number', min('order_date') as 'min_date'
FROM 'orders' o
GROUP BY o.'costumer_number', o.'po'
) min ON o.'customrer' = min.'costumer' and o.'po_number' = min.'po_number'
ORDER BY 1,2
這shold清除出來你要哪`PO#`
?那最早的訂單?最後一個訂單的那個?還有別的嗎? – 2012-02-08 19:20:43
具有相同'PO'的所有行都具有相同的'CustomerNumber'嗎? – 2012-02-08 19:21:53