问题一 搞错了...
表一: 资料表 
资料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最大的数据(以上红色的数据)? 

解决方案 »

  1.   

    问题一 
    表一: 资料表 
    资料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)
      

  2.   

    --> 测试数据: [资料表]
    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
    */
      

  3.   

    1.
    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
      

  4.   

    问题二 
    表一: 工程表  (主键:工程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
      

  5.   

    问题一 
    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
      

  6.   

    2.
    select a.*,b.*,(select sum(单价*数量) from 发票内容表 where 发票NO=b.发票NO group by 发票NO)
     from 工程表 a inner join a 发票表 b on b.工程NO=a.工程NO