sql语句如何写?(30分)

  • 主题发起人 主题发起人 dqj
  • 开始时间 开始时间
D

dqj

Unregistered / Unconfirmed
GUEST, unregistred user!
表a 字段b 字段b 字段c
1110 10 2000-1-5
1111 2 2000-1-6
1110 3 2000-1-6
1110 6 2000-1-7
1111 3 2000-1-9
1110 6 2000-1-3
1112 3 2000-1-6
1.要求返回字段b不重复的值,并且 字段c的最后二个日期 即如下结果:
1110 2000-1-7
1110 2000-1-6
1111 2000-1-9
1111 2000-1-6
1112 2000-1-6
2.怎样返回字段中重复的值?





 
更正一下,字段B1,字段B2
返回字段c最后二个日期,不是排序,比如字段B1的1110有四条
记录,只要返回最近的两个日期,并且字段B最多不重复2个.
字段B1代表商品编码,字段B2代表价格,字段C代表购进日期
因为价格经常在变动,所以想返回所有商品的最近购进日期
的二条记录.

 
题意不是很清楚?

既然B1可以重复,那么哪个字段是主键,是否是B1+C ,C是否精确到分钟和秒?另外,库里如果对应一种商品只有一条记录,是否要选择?
 
很难办。返回所有商品的最近购进日期
的一条记录。这还容易些。
select B1,B2,max(c) from yourTable
where 1=1
group by B1,B2
 
Select B1,B2,c from yourTable
where (c in (Select Max(c) from yourTable group by B1,B2))
or (c in (Select Max(c) from yourTable
where not (c in (Select Max(c) from yourTable group by B1,B2)))
group by B1,B2)
group by B1,B2
比较罗嗦,但请试一下。
 
一句话很难写,除非你用程序话的SQL来写。
 
你的数据库设计有问题。
 
我直接写出例子来,也许更清楚一些.存储过程:
SELECT #temp.编码,#temp.商品名称,#temp.购进日期 ,单价 FROM B购进 right JOIN
(SELECT B购进.编码 ,b编码.商品名称,max(日期)as 购进日期 FROM
B购进 left join b编码 on B购进.编码=b编码.编码
group by B购进.编码,b编码.商品名称) as #temp on B购进.编码= #temp.编码 and B购进.日期=#temp.购进日期
group by #temp.编码,#temp.商品名称,#temp.购进日期,单价
order by #temp..编码, #temp.购进日期 desc
1.上面的例子只能返回购进日期的最大值
2.还有未有简单的写法,我感觉太麻烦了一点.
3.我想加一个参数,如参数=1,则返回编码 like '1%',如参数=2,则返回编码 like '2%'
该如何写?

 
2. select b from a group by b haveing count(b)>1
 
>3.我想加一个参数,如参数=1,则返回编码 like '1%' ???
like 可以和 group 并用吗??

select a.No as No,max(a.datetime) as DT1,a.price as price1,
(select max(b.datetime)
from table b
where b.No = a.No
and b.datetime < a.datetime
)as DT2,
(select b.price
from table b
where b.No = a.No
and b.datetime =
(select max(b.datetime)
from table b
where b.No = a.No
and b.datetime < a.datetime
))as price2
from table a
group by a.No

注意:
此处将利用别名将 table 多次使用。
如果可以简化,请告知一声。
 
多人接受答案了。
 
后退
顶部