我試圖在相同的日曆月內顯示一個帳戶列表,其中有兩個相同的產品已經爲同一個帳戶訂購。SQL - 根據多個條件檢索數據
字段名稱:
A/c number,
Order id,
Cust name,
Product,
Purchase date
我已經使用GROUP BY和HAVING,但我關心的記錄容量返回。
我試圖在相同的日曆月內顯示一個帳戶列表,其中有兩個相同的產品已經爲同一個帳戶訂購。SQL - 根據多個條件檢索數據
字段名稱:
A/c number,
Order id,
Cust name,
Product,
Purchase date
我已經使用GROUP BY和HAVING,但我關心的記錄容量返回。
我建議在同一張桌子上做兩次內連接。喜歡的東西:
SELECT o1.*
FROM orders o1
INNER JOIN orders o2
ON o1.account_num = o2.account_num
AND o1.product_id = o2.product_id
AND MONTH(o1.purchase_date) = MONTH(o2.purchase_date)
AND YEAR(o1.purchase_date) = YEAR(o2.purchase_date)
我只是想指出,你必須同時匹配的幾個月和幾年,以避免與2015分之1
SELECT *
FROM TABLE as table2
INNER JOIN table as table1
on table1.product = table2.product AND MONTH(table1.purchase_date) = MONTH(tabl2.purchase_date) AND YEAR(table1.purchase_date) = YEAR(table2.purchase_date)
這應該是訣竅。
假設我們沒有table names
,並且缺少數據,這裏是一個將返回所需內容的查詢示例。只需將字段/表名稱更改爲您正在使用的任何內容。
SELECT account_name
FROM purchaseTable
JOIN productTable on purchaseTable.product = productTable.id
WHERE MONTH(purchaseTable.purchase_date) = MONTH(productTable.purchase_date)
AND YEAR(purchaseTable.purchase_date) = YEAR(productTable.purchase_date)
HAVING COUNT(*) = 2
GROUP BY account_name;
select *
from accounts
where account_id in (
select o.account_id
from orders as o inner join line_items as li on li.order_id = o.order_id
group by o.account_id, li.product_id, year(o.purchase_date), month(o.purchase_date)
having count(*) = 2
)
簡單的方法來匹配上二千零十四分之一購買的東西獲取帳戶信息,儘管您失去了購買信息。
下面是保持信息既order_ids和訂單的日曆月一起的方法:
select *
from
accounts as a inner join
(
select
o.account_id, li.product_id,
year(o.purchase_date) as purchase_yr, month(o.purchase_date) as purchase_mo,
min(o.order_id) as order_id1, max(o.order_id) as order_id2
from orders as o inner join line_items as li on li.order_id = o.order_id
group by o.account_id, li.product_id, year(o.purchase_date), month(o.purchase_date)
having count(*) = 2
) as multiples
on multiples.account_id = a.account_id
請編輯您的問題,說明你正在使用的查詢,並解釋爲什麼你是「關心返回的記錄量「。 – 2015-02-10 17:51:48
我在猜測訂單ID字段是什麼扔掉你,刪除該字段。你也有計數字段爲> 1? – JB13 2015-02-10 17:55:31
你正在使用哪些DBMS? Postgres的?甲骨文? – 2015-02-10 18:52:53