我试图在相同的日历月内显示一个帐户列表,其中有两个相同的产品已经为同一个帐户订购。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