Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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
Oracle-使用子查询_Oracle_Oracle9i - Fatal编程技术网

Oracle-使用子查询

Oracle-使用子查询,oracle,oracle9i,Oracle,Oracle9i,我正试图写一个Select语句,它将审查卖给我们客户的商品。我希望看到在同一天内多次购买的所有客户以及与他们相关的销售编号 以下是我当前的结构: 表:销售额 字段:SalesNum、customer、SaleDt 测试数据 Customer - SalesNum - SaleDt --------------------------------- Mike - 1 - 1/1/15 Bob - 2 - 1/1/15 M

我正试图写一个Select语句,它将审查卖给我们客户的商品。我希望看到在同一天内多次购买的所有客户以及与他们相关的销售编号

以下是我当前的结构:

表:销售额

字段:SalesNum、customer、SaleDt

测试数据

Customer  -  SalesNum  -  SaleDt  
---------------------------------
Mike    -     1        -   1/1/15
Bob     -     2        -   1/1/15
Mike    -     3        -   1/1/15
Tom     -     4        -   1/2/15
Tom     -     5        -   1/2/15
期望的结果

Customer  -  SalesNum  -  SaleDt 
---------------------------------
Mike    -     1        -   1/1/15
Mike    -     3        -   1/1/15
Tom     -     4        -   1/2/15
Tom     -     5        -   1/2/15

我非常感谢您对使用方法的任何见解和建议。

我想说,似乎还不够清楚

从Sales中选择Customer、SalesNum、SaleDt,其中SaleDt=sysdate order by Customer

这将列出客户根据您的解释订购的今天的销售额这是结果,但它是吗?

和您的示例数据:

with sales (Customer , SalesNum , SaleDt) as (  
select 'Mike' , 1 , '1/1/15' from dual union all
select 'Bob' , 2 , '1/1/15' from dual  union all
select 'Mike' , 3 , '1/1/15' from dual  union all
select 'Tom' , 4 , '1/2/15' from dual  union all
select 'Tom' , 5 , '1/2/15' from dual )

select customer,salesnum,s.saledt,total from sales s inner join (
select saledt,customer,count(*) total from sales
group by saledt,customer) using (customer)
where total>1 and customer = 'Mike'
结果:

CUSTOMER   SALESNUM SALEDT      TOTAL
-------- ---------- ------ ----------
Mike              1 1/1/15          2
Mike              3 1/1/15          2
CUSTOMER   SALEDT   SALESNUMS   TOTAL
Bob        1/1/15       2         1
Mike       1/1/15      1,3        2
Tom        1/2/15      4,5        2
或者,您可能希望SalesNum用逗号分隔,以避免重复如下内容:

select customer,saledt,to_char(wm_concat(salesNum)) salesNums,count(*) total 
from sales
group by saledt,customer
结果:

CUSTOMER   SALESNUM SALEDT      TOTAL
-------- ---------- ------ ----------
Mike              1 1/1/15          2
Mike              3 1/1/15          2
CUSTOMER   SALEDT   SALESNUMS   TOTAL
Bob        1/1/15       2         1
Mike       1/1/15      1,3        2
Tom        1/2/15      4,5        2

顺便提一下为什么要使用子查询请澄清不幸的是,我不只是想要今天的销售额。我需要它一段时间。我想我需要使用一个基于我所做研究的子查询。我基本上需要与SalesDT匹配的信息。在我的期望回报示例中,我仅显示SalesDT与单个客户匹配的销售,但他们的SalesNum.mmm不同,像这样?按客户从销售订单中选择客户、SalesNum、SaleDt,其中日期介于截止日期('2015年1月1日','dd-mm-rrrr')和截止日期('2015年2月1日','dd-mm-rrrr');哦,我明白了,你只需要购买过不止一次的客户,但在一定的时间范围内?Aramillo,谢谢你的评论。我试着用这个,但没有显示出想要的结果。相反,我收到了第一个条目的副本。您能显示您期望的输出吗?。第二个结果与问题中的输出相同,除了总数列。不幸的是,当我把它放进去时,我在末尾添加了一个and语句,声明:and customer='Mike',我的输出如下:Mike-1-1/1/15-2 Mike-1-1/1/15-2 Mike-1-1/1/15-2我真的不明白,检查更新,这里我使用了您的示例数据如果您需要获得所需的结果,您可以运行下面的查询和检查。sql查询以在您的问题中获得确切的所需结果,请从销售中选择*,其中客户按客户asc订购('Mike','Tom')