asoka.hang's oracle/java blog

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  4 随笔 :: 0 文章 :: 0 评论 :: 0 Trackbacks
case:要求在一张销售信息表中查询每件产品的最近销售日期(不用PL/SQL实现)。

创建test_purchase表:
SQL >   create   table  test_purchase(
  
2   product_name  varchar2 ( 25
),
  
3   salesperson  varchar2 ( 3
),
  
4
  purchase_date date,
  
5   quantity  number ( 4 , 2
)
  
6
  );

表已创建。

往test_purchase表中插入数据:
SQL >   insert   into  test_purchase  values ( ' small widget ' , ' ca ' ,to_date( ' 2003-7-14 ' , ' YYYY-MM-DD ' ), 1 );

已创建 
1
 行。

SQL
>   insert   into  test_purchase  values ( ' medium wodget ' , ' bb ' ,to_date( ' 2003-7-14 ' , ' YYYY-MM-DD ' ), 75
);

已创建 
1
 行。

SQL
>   insert   into  test_purchase  values ( ' chrome phoobar ' , ' ga ' ,to_date( ' 2003-7-14 ' , ' YYYY-MM-DD ' ), 2
);

已创建 
1
 行。

SQL
>   insert   into  test_purchase  values ( ' small widget ' , ' ga ' ,to_date( ' 2003-7-15 ' , ' YYYY-MM-DD ' ), 8
);

已创建 
1
 行。

SQL
>   insert   into  test_purchase  values ( ' medium wodget ' , ' lb ' ,to_date( ' 2003-7-15 ' , ' YYYY-MM-DD ' ), 20
);

已创建 
1
 行。

SQL
>   insert   into  test_purchase  values ( ' round snaphoo ' , ' ca ' ,to_date( ' 2003-7-16 ' , ' YYYY-MM-DD ' ), 5
);

已创建 
1  行。

关键的select 子查询语句来了,呵呵

SQL >   select   *   from  test_purchase  where (product_name,purchase_date)
  
2    in

  
3   ( select  product_name, max (purchase_date)  from  test_purchase  group   by  product_name);

PRODUCT_NAME              SAL PURCHASE_D   QUANTITY
-- ----------------------- --- ---------- ----------

chrome phoobar            ga   2003 - 07 - 14            2
medium wodget             lb  
2003 - 07 - 15           20
round  snaphoo             ca   2003 - 07 - 16            5
small widget              ga  
2003 - 07 - 15            8

其实仔细想一想也不是很复杂,不过这条语句乍一想来如何写还真有点困难,所以用了个妙字,:p

posted on 2006-04-13 23:04 asoka的oracle/java博客 阅读(287) 评论(0)  编辑  收藏 所属分类: Oracle

只有注册用户登录后才能发表评论。


网站导航: