sql语句如何写?

dqj 2000-07-06 02:08:00
表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.怎样返回字段中重复的值?

...全文
148 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dqj 2000-07-10
  • 打赏
  • 举报
回复
我直接写出例子来,也许更清楚一些.存储过程:
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%'
该如何写?

red9152 2000-07-07
  • 打赏
  • 举报
回复
我想你是不是要下面的语句:

SELECT *
FROM a AS aa
WHERE c in (SELECT TOP 2 c
FROM a bb where c=aa.c order by c desc)

可能执行速度会慢一些(有子查询)
dqj 2000-07-06
  • 打赏
  • 举报
回复
返回字段c最后二个日期,不是排序,比如字段B的1110有四条记录,只要返回最近的两个日期,并且字段B最多不重复2个.
字段B代表商品编码,字段B2代表价格,字段C代表购进日期
因为价格经常在变动,所以想返回所有商品的最近购进日期的二条记录.
vga 2000-07-06
  • 打赏
  • 举报
回复
1、按你的结果,只要按字段b排序即可。
2、你的表又个字段 b. 实际上要得到不重复的结果 sql语句有个选项 :DESC

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧