问题一 搞错了...
表一: 资料表
资料NO 资料修改NO 内容 更新日期
0001 0001-01 ... 20080508
0001 0001-02 ... 20080509
0001 0001-03 ... 20080509
0002 0002-01 ... 20080508
0002 0002-02 ... 20080508
0002 0002-03 ... 20080508
0002 0002-04 ... 20080508
0003 0003-01 ... 20080508 请问用SQL 如何取得 资料修改NO最大的数据(以上红色的数据)?
表一: 资料表
资料NO 资料修改NO 内容 更新日期
0001 0001-01 ... 20080508
0001 0001-02 ... 20080509
0001 0001-03 ... 20080509
0002 0002-01 ... 20080508
0002 0002-02 ... 20080508
0002 0002-03 ... 20080508
0002 0002-04 ... 20080508
0003 0003-01 ... 20080508 请问用SQL 如何取得 资料修改NO最大的数据(以上红色的数据)?
表一: 资料表
资料NO 资料修改NO 内容 更新日期
0001 0001-01 ... 20080508
0001 0001-02 ... 20080509
0001 0001-03 ... 20080509
0002 0001-01 ... 20080508
0002 0001-02 ... 20080508
0002 0001-03 ... 20080508
0002 0001-04 ... 20080508
0003 0001-01 ... 20080508 请问用SQL 如何取得 资料修改NO最大的数据(以上红色的数据)? select * from 资料表 t where 资料修改NO = (select max(资料修改NO) from 资料表 where 资料NO = t.资料NO)
if object_id('[资料表]') is not null drop table [资料表]
create table [资料表] (资料NO varchar(4),资料修改NO varchar(7),内容 varchar(3),更新日期 datetime)
insert into [资料表]
select '0001','0001-01','...','20080508' union all
select '0001','0001-02','...','20080509' union all
select '0001','0001-03','...','20080509' union all
select '0002','0001-01','...','20080508' union all
select '0002','0001-02','...','20080508' union all
select '0002','0001-03','...','20080508' union all
select '0002','0001-04','...','20080508' union all
select '0003','0001-01','...','20080508'select * from [资料表] a where right(资料修改NO,2)=(select max(right(资料修改NO,2)) from [资料表] where 资料NO=a.资料NO)
/*
0001 0001-03 ... 2008-05-09 00:00:00.000
0002 0001-04 ... 2008-05-08 00:00:00.000
0003 0001-01 ... 2008-05-08 00:00:00.000
*/
select a.* from 资料表 a inner join (
select 资料NO,max(资料修改NO) as modi,max(更新日期) as upda from 资料表 group by 资料NO
)b on a.资料NO=b.资料NO and a.资料修改NO=b.modi and a.更新日期=b.upda
表一: 工程表 (主键:工程NO 工程修改NO)
工程NO 工程修改NO 工程名称
A1 A1-1 F7-8 表二: 发票表 (主键:发票NO 外键:工程NO 工程修改NO)
发票NO 工程NO 工程修改NO
1001 A1 A1-1 表三:发票内容表 (主键:发票内容NO 发票NO 发票小项NO 外键:发票NO)
发票内容NO 发票NO 发票小项NO 单价 数量
1 1001 1 10 10
1 1001 2 20 5
1 1001 3 30 6 我想将这三张表关联,然后取出相关(如统计数据)
以下SQL有错,请高手帮斧正....是不是这样关连? select 工程表.* ,发票表.* Sum(发票内容表.单价 * 发票内容表.数量) 合计
from 工程表,发票表,发票内容表
where
工程表 inner join 发票表 on (发票表.工程NO = 工程表.工程NO AND 发票表.工程修改NO = 工程表.工程修改NO)
inner join 发票内容表 on (发票内容表.发票NO = 发票表.发票NO)
group by 发票表.发票NO select 工程表.* , 发票表.* , 合计 = isnull((select sum(发票内容表.单价 * 发票内容表.数量) from 发票内容表 where 工程表.工程NO = 发票表.工程NO and 发票表.发票NO = 发票内容表.发票NO),0)
from 工程表 , 发票表
where 工程表.工程NO = 发票表.工程NO
select * from 资料表 t where 资料修改NO = (select max(资料修改NO) from 资料表 where 资料NO = t.资料NO)问题二
select 工程表.* , 发票表.* , 合计 = isnull((select sum(发票内容表.单价 * 发票内容表.数量) from 发票内容表 where 工程表.工程NO = 发票表.工程NO and 发票表.发票NO = 发票内容表.发票NO),0)
from 工程表 , 发票表
where 工程表.工程NO = 发票表.工程NO
select a.*,b.*,(select sum(单价*数量) from 发票内容表 where 发票NO=b.发票NO group by 发票NO)
from 工程表 a inner join a 发票表 b on b.工程NO=a.工程NO