一个表 A
 结构和数据如下:
_______________________________________
|   字段1  |   字段2   |   字段3       |
----------------------------------------
|   A-1   |   字段2   |   187          |
----------------------------------------
|   A-2  |   字段2   |   187           |
----------------------------------------
|   A-3  |   字段2   |   187           |
----------------------------------------
|   B-2  |   字段2   |   201           |
----------------------------------------
|   B-1  |   字段2   |   201           |
----------------------------------------
......................
要求查询的数据为: 字段3中的数据要求唯一,不能重复,字段1中的数据要求取最后一笔记录,也就是“-”后面的数字 最大的一个记录以上的数据,查询后数据为:A-3  字段2       187
B-3  字段2       201....................
请教各位!谢谢。急着结贴。

解决方案 »

  1.   

    SELECT * FROM TB T WHERE COL1=(SELECT MAX(COL1) FROM TB WHERE COL3=T.COL3)
      

  2.   

    select
      *
    from
      tb t
    where
      字段1=(select max(字段1) from tb where 字段2=t.字段2 and 字段3=t.字段3)
      

  3.   

    SELECT * FROM TB T WHERE RIGHT(COL1,LEN(COL1)-2)
    =(SELECT MAX(RIGHT(COL1,LEN(COL1)-2)) FROM TB 
    WHERE COL3=T.COL3 AND COL2=T.COL2 AND
    SUBSTRING(COL1,1,CHARINDEX('-',COL1)-1)=SUBSTRING(T.COL1,1,CHARINDEX('-',COL1)-1))不好意思没考虑周到
      

  4.   

    ----------------------------------------------------------------
    -- Author  :SQL77(只为思齐老)
    -- Date    :2010-02-01 15:27:15
    -- Version:
    --      Microsoft SQL Server  2000 - 8.00.194 (Intel X86) 
    -- Aug  6 2000 00:57:48 
    -- Copyright (c) 1988-2000 Microsoft Corporation
    -- Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 3)
    --
    ----------------------------------------------------------------
    --> 测试数据:#TB
    if object_id('tempdb.dbo.#TB') is not null drop table #TB
    go 
    create table #TB([COL1] varchar(3),[COL2] varchar(5),[COL3] int)
    insert #TB
    select 'A-1','字段2',187 union all
    select 'A-2','字段2',187 union all
    select 'A-3','字段2',187 union all
    select 'B-2','字段2',201 union all
    select 'B-1','字段2',201
    --------------开始查询--------------------------SELECT * FROM #TB T WHERE RIGHT(COL1,LEN(COL1)-2)
    =(SELECT MAX(RIGHT(COL1,LEN(COL1)-2)) FROM #TB 
    WHERE COL3=T.COL3 AND COL2=T.COL2 AND
    SUBSTRING(COL1,1,CHARINDEX('-',COL1)-1)=SUBSTRING(T.COL1,1,CHARINDEX('-',COL1)-1))
    ----------------结果----------------------------
    /* (所影响的行数为 5 行)COL1 COL2  COL3        
    ---- ----- ----------- 
    A-3  字段2   187
    B-2  字段2   201(所影响的行数为 2 行)
    */