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