表a
date time aa                       bb
0201 0930 15             ----------15
0201 0940 14             ----------15
0201 0945 17             ----------17
0201 0950 18             ----------18
0202 0920 12             ----------12
0202 0930 18             ----------18
0202 0950 15             ----------18
0202 0955 16             ----------18
0203 0920 13             ----------13
0203 0925 15             ----------15
0203 0930 19             ----------19
0203 0940 14             ----------19
... .... .. ..
... .... .. ..
... .... .. ..date是日期如2月1日 time为时间如9点30分 bb列为以当日date为准取当前time的最大值
请问如何查询bb列的值

解决方案 »

  1.   

    bb列为以当日date为准取当前time的aa列的最大值
      

  2.   

    select *,(select max(aa) from 表a where date=t.date) as bb
    from 表a t
      

  3.   

    select
      a.*,b.date
    from
      a,(select [date],max(aa) from a group by [date])b
    where
      a.[date]=b.[date]
      

  4.   

    --------------------------------------------------------------------------
    --  Author : htl258(Tony)
    --  Date   : 2010-04-05 22:49:02
    --  Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
    --          Jul  9 2008 14:43:34 
    --          Copyright (c) 1988-2008 Microsoft Corporation
    --          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
    --------------------------------------------------------------------------
    --> 生成测试数据表:aIF NOT OBJECT_ID('[a]') IS NULL
    DROP TABLE [a]
    GO
    CREATE TABLE [a]([date] NVARCHAR(10),[time] NVARCHAR(10),[aa] INT,[bb] INT)
    INSERT [a]
    SELECT '0201','0930',15,15 UNION ALL
    SELECT '0201','0940',14,15 UNION ALL
    SELECT '0201','0945',17,17 UNION ALL
    SELECT '0201','0950',18,18 UNION ALL
    SELECT '0202','0920',12,12 UNION ALL
    SELECT '0202','0930',18,18 UNION ALL
    SELECT '0202','0950',15,18 UNION ALL
    SELECT '0202','0955',16,18 UNION ALL
    SELECT '0203','0920',13,13 UNION ALL
    SELECT '0203','0925',15,15 UNION ALL
    SELECT '0203','0930',19,19 UNION ALL
    SELECT '0203','0940',14,19
    GO
    --SELECT * FROM [a]-->SQL查询如下:
    select distinct [date],bb=(select top 1 bb from a where date=t.date order by time desc) from a t
    /*
    date       bb
    ---------- -----------
    0201       18
    0202       18
    0203       19(3 行受影响)
    */
      

  5.   

    --------------------------------------------------------------------------
    --  Author : htl258(Tony)
    --  Date   : 2010-04-05 22:49:02
    --  Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
    --          Jul  9 2008 14:43:34 
    --          Copyright (c) 1988-2008 Microsoft Corporation
    --          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
    --------------------------------------------------------------------------
    --> 生成测试数据表:aIF NOT OBJECT_ID('[a]') IS NULL
    DROP TABLE [a]
    GO
    CREATE TABLE [a]([date] NVARCHAR(10),[time] NVARCHAR(10),[aa] INT,[bb] INT)
    INSERT [a]
    SELECT '0201','0930',15,15 UNION ALL
    SELECT '0201','0940',14,15 UNION ALL
    SELECT '0201','0945',17,17 UNION ALL
    SELECT '0201','0950',18,18 UNION ALL
    SELECT '0202','0920',12,12 UNION ALL
    SELECT '0202','0930',18,18 UNION ALL
    SELECT '0202','0950',15,18 UNION ALL
    SELECT '0202','0955',16,18 UNION ALL
    SELECT '0203','0920',13,13 UNION ALL
    SELECT '0203','0925',15,15 UNION ALL
    SELECT '0203','0930',19,19 UNION ALL
    SELECT '0203','0940',14,19
    GO
    --SELECT * FROM [a]-->SQL查询如下:
    select distinct t.date, b.bb
    from a t
    cross apply (select top 1 bb from a where t.date=date order by time desc) b 
    /*
    date       bb
    ---------- -----------
    0201       18
    0202       18
    0203       19(3 行受影响)
    */2005也可以用apply
      

  6.   

    date time aa           bb
    0201 0930 15 ----------15
    0201 0940 14 ----------15
    0201 0945 17 ----------17
    0201 0950 18 ----------18
    0202 0920 12 ----------12
    0202 0930 18 ----------18
    0202 0950 15 ----------18
    0202 0955 16 ----------18
    0203 0920 13 ----------13
    0203 0925 15 ----------15
    0203 0930 19 ----------19
    0203 0940 14 ----------19bb列的取值是每天的第一条数据开始到当前时间的最大aa的值 第一条bb的值为aa的值
      

  7.   

    表只有3个列 date time aabb列的取值是每天的第一条数据开始到当前时间的最大aa的值 第一条bb的值为aa的值如何生成bb列的SQL语句
      

  8.   

    date time aa ----------bb
    0201 0930 15 ----------15   2月1日第一条数据
    0201 0940 14 ----------15
    0201 0945 17 ----------17
    0201 0950 18 ----------18
    0202 0920 12 ----------12   2月2日第一条数据
    0202 0930 18 ----------18
    0202 0950 15 ----------18
    0202 0955 16 ----------18
    0203 0920 13 ----------13   2月3日第一条数据
    0203 0925 15 ----------15
    0203 0930 19 ----------19
    0203 0940 14 ----------19
      

  9.   

    date time aa bb
    0201 0930 15 
    0201 0940 14 
    0201 0945 17 
    0201 0950 18
    0202 0920 12 
    0202 0930 18
    0202 0950 15 
    0202 0955 16
    0203 0920 13
    0203 0925 15 
    0203 0930 19
    0203 0940 14就这些数据,bb列的结果为如何,如果没规律,请标识说明。
      

  10.   

    date time aa bb
    0201 0930 15 15
    0201 0940 14 15
    0201 0945 17 17
    0201 0950 18 18
    0202 0920 12 12
    0202 0930 18 18
    0202 0950 15 18
    0202 0955 16 18
    0203 0920 13 13
    0203 0925 15 15
    0203 0930 19 19
    0203 0940 14 19
    bb列的取值是每天的第一条数据开始到当前时间的最大aa的值 第一条bb的值为aa的值
      

  11.   

    bb列的取值是每天的第一条数据开始到当前时间的最大aa的值     每月第一条bb的值为aa的值
      

  12.   

    --------------------------------------------------------------------------
    --  Author : htl258(Tony)
    --  Date   : 2010-04-06 00:09:16
    --  Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
    --          Jul  9 2008 14:43:34 
    --          Copyright (c) 1988-2008 Microsoft Corporation
    --          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
    --------------------------------------------------------------------------
    --> 生成测试数据表:aIF NOT OBJECT_ID('[a]') IS NULL
    DROP TABLE [a]
    GO
    CREATE TABLE [a]([date] NVARCHAR(10),[time] NVARCHAR(10),[aa] INT,[bb] INT)
    INSERT [a]
    SELECT '0201','0930',15,NULL UNION ALL
    SELECT '0201','0940',14,NULL UNION ALL
    SELECT '0201','0945',17,NULL UNION ALL
    SELECT '0201','0950',18,NULL UNION ALL
    SELECT '0202','0920',12,NULL UNION ALL
    SELECT '0202','0930',18,NULL UNION ALL
    SELECT '0202','0950',15,NULL UNION ALL
    SELECT '0202','0955',16,NULL UNION ALL
    SELECT '0203','0920',13,NULL UNION ALL
    SELECT '0203','0925',15,NULL UNION ALL
    SELECT '0203','0930',19,NULL UNION ALL
    SELECT '0203','0940',14,NULL
    GO
    --SELECT * FROM [a]-->SQL查询如下:
    --查询:
    select *,bb=(select MAX(aa) from a where date=t.date and time<=t.time) from a t
    --更新:
    update a set 
    bb=(select MAX(aa) from a t where a.date=t.date and t.time<=a.time)
    --更新结果:
    select * from a
    /*
    date       time       aa          bb
    ---------- ---------- ----------- -----------
    0201       0930       15          15
    0201       0940       14          15
    0201       0945       17          17
    0201       0950       18          18
    0202       0920       12          12
    0202       0930       18          18
    0202       0950       15          18
    0202       0955       16          18
    0203       0920       13          13
    0203       0925       15          15
    0203       0930       19          19
    0203       0940       14          19(12 行受影响)*/
      

  13.   

    plse refer the ablove reply