Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择在日期范围内订购两次的项目编号,sql_Sql_Select_Date Range - Fatal编程技术网

选择在日期范围内订购两次的项目编号,sql

选择在日期范围内订购两次的项目编号,sql,sql,select,date-range,Sql,Select,Date Range,我目前在sql studio 2012工作。我有一个包含DateOrdered、ItemNumeber和requestor列的表。我正在尝试编写一个select语句,它将在7天内提取已订购两次的项目编号列表。商品编号可以是另一个人,也可以是同一个人。如果您的意思是在任何7天内,那么这相当于在另一个订单的7天内订购的商品编号列表,对吗 如果是,那么 Select distinct ItemNumber From table t Where exists

我目前在sql studio 2012工作。我有一个包含DateOrdered、ItemNumeber和requestor列的表。我正在尝试编写一个select语句,它将在7天内提取已订购两次的项目编号列表。商品编号可以是另一个人,也可以是同一个人。

如果您的意思是在任何7天内,那么这相当于在另一个订单的7天内订购的商品编号列表,对吗

如果是,那么

     Select distinct ItemNumber
     From table t
     Where exists 
          (Select * From table 
           where itemNumber = t.ItemNumber
             and DateOrdered > t.DateOrdered  
             and DateOrdered < t.DateOrdered + 7)

having子句是你的freind

select someFields, count(*) records
from someTables
where some conditions are met
group by someFields
having count(*) = 2

编辑:在注释后修改

select * from table a
inner join table b
  on a.itemnumber = b.itemnumber
  and Abs(datediff(DD, a.dateordered, b.dateordered)) <= 7
  and a.ID < b.ID --or something like this to ensure you don't return matches that are actually the same row.  If you don't have an ID and the date ordered is unique for each order, replace ID with that
如果您需要同时返回两个订单/日期,这将成对返回订单。如果您只需要列表,请使用:

select distinct a.itemnumber from table a
inner join table b
  on a.itemnumber = b.itemnumber
  and Abs(datediff(DD, a.dateordered, b.dateordered)) <= 7
  and a.ID <> b.ID --or something like this to ensure you don't return matches that are actually the same row.  If you don't have an ID and the date ordered is unique for each order, replace ID with that

注意,这将返回至少两次排序的任何内容-如果您只需要恰好两次排序的内容,则需要另一个查询

你的意思是在7天内吗?或者仅仅在一个特定的7天期限内?@CharlesBretana任何7天期限这并没有涉及订购两次的部分。是的,是的。如果在7天期限内存在同一项目的另一条记录,则该另一条记录表示第二个订单,这几乎可以工作,但不会捕获重复的零件号。你能帮我做这个吗Dan?重复的零件号是什么意思?你是说商品编号吗?如果你是,你是什么意思?是否要查看两次相同的itemNumber输出?这会返回我的itemNumber,但是否有方法可以查看订购日期。不需要计数,只需制作一个清单,清单上的项目编号与旁边的订单日期重复。我找到了答案,这个解决方案最适合我的问题。谢谢我还有一个数量栏,我没有提到。看起来您的底部查询重复了该数量。“数量”列是一个int.@Cheddar。复制是什么意思?select distinct应消除任何重复项。您是如何修改查询以合并数量列的?