sql server 2000 最小值问题请教?

wyxdrqc 2015-07-16 09:49:37
现有sql 2000 某数据库中的表 A ,包含字段为:key, Cardid,name, Date
其中相同cardid值有多条记录,比如 :
Key cardid name date
1 001 王天 20140101
30 001 王天 20140702
........
244 056 陈叶 20140103
256 056 陈叶 20140805

现在需要完成两个功能:
1.通过查询提取每个cardid相同的 记录中date最小记录,即由所有cardid 组成的最小日期记录集
2. 将查询到的最小集插入另一个表B中。

请各位大哥多多指点,谢谢了。
...全文
77 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wyxdrqc 2015-07-16
2楼的大哥,查询显示正常了,但加入 insert into B 之后,显示 : 服务器: 消息 208,级别 16,状态 1,行 1 对象名 'B' 无效。 该如何解决呢?
回复
Tiger_Zhao 2015-07-16
如果表B还没创建就用下面这种方式
SELECT A.*
INTO B
FROM ...
回复
wyxdrqc 2015-07-16
这位大哥,运行后显示“对象B无效”呢?
回复
许晨旭 2015-07-16
把这个结果集放到衣柜临时表里,让后取ROW=1的值插入到另外的表就可以了
create table #t
(
	[Key]    int,
	cardid varchar(5),
	name   varchar(5),
	[date] date
)
insert into #t
select 1,'001','王天','20140101' union all
select 30,'001','王天','20140702' union all
select 244,'056','陈叶','20140103' union all
select 256,'056','陈叶','20140805'

select count(*) as row,a.[Key],a.cardid, a.name,a.[date]
from #t a
inner join #t b on a.cardid = b.cardid and a.[date]>=b.[date]
group by a.cardid, a.name,a.[date],a.[Key]
order by 1,a.[date]

/*
row         Key         cardid name  date
----------- ----------- ------ ----- ----------
1           1           001    王天    2014-01-01
1           244         056    陈叶    2014-01-03
2           30          001    王天    2014-07-02
2           256         056    陈叶    2014-08-05

(4 行受影响)
*/
回复
Tiger_Zhao 2015-07-16
INSERT INTO B
SELECT A.*
FROM ( -- 为了防止最小date有多条,再求最小的 key
SELECT t1.cardid,
MIN(A.[key]) [key]
FROM ( -- 求每个 cardid 的最小 date
SELECT cardid,
MIN(date) date
FROM A
GROUP BY cardid
) t1
JOIN A
ON t1.cardid = A.cardid
AND t1.date = A.date
GROUP BY t1.cardid
) t2
JOIN A
ON t2.[key] = A.[key]
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-07-16 09:49
社区公告
暂无公告