select * from tb where left(调整日期,6)='200709'

解决方案 »

  1.   

    select * 
    from tb 
    where left(调整日期,6)='200709' and 调整原因='不适应'
      

  2.   

    select * from tb where left(终止日期,6)='200709' and 调整原因='不适应'
      

  3.   

    select * from tb where convert(varchar(7),终止日期,120) = '2007-09' 
      

  4.   

    select * from tb where convert(varchar(7),终止日期,120) = '2007-09' 
      

  5.   

    select * from tb
    where  起始日期>='20070101' and  终止日期<='20070930'  
      

  6.   

    create table tb(id int, 人员ID varchar(10), 床位ID int, 起始日期 datetime, 终止日期 datetime, 调整原因 varchar(10))
    insert into tb values(1 , '001' , 1201 , '20050901' , '20070902', '不适应') 
    insert into tb values(2 , '001' , 1310 , '20070903' , '20080101', '')
    insert into tb values(3 , '002' , 1501 , '20070101' , '20070910', '不适应') 
    insert into tb values(4 , '002' , 1802 , '20070911' , '20080101', '')
    insert into tb values(5 , '003' , 1502 , '20050801' , '20070901', '死亡') 
    insert into tb values(6 , '004' , 1508 , '20040101' , '20070903', '其他') 
    goselect * from tb where convert(varchar(7),终止日期,120) = '2007-09' and 调整原因 = '不适应'
    /*
    id          人员ID       床位ID        起始日期                                                   终止日期                                                   调整原因       
    ----------- ---------- ----------- ------------------------------------------------------ ------------------------------------------------------ ---------- 
    1           001        1201        2005-09-01 00:00:00.000                                2007-09-02 00:00:00.000                                不适应
    3           002        1501        2007-01-01 00:00:00.000                                2007-09-10 00:00:00.000                                不适应(所影响的行数为 2 行)
    */select id = (select count(1) from 
    (
      select * from tb where convert(varchar(7),终止日期,120) = '2007-09' and 调整原因 = '不适应'
    ) m
     where 人员ID < n.人员ID) + 1,人员ID , 床位ID , 起始日期 , 终止日期 , 调整原因
    from 
    (
      select * from tb where convert(varchar(7),终止日期,120) = '2007-09' and 调整原因 = '不适应'
    ) n/*
    id          人员ID       床位ID        起始日期                                                   终止日期                                                   调整原因       
    ----------- ---------- ----------- ------------------------------------------------------ ------------------------------------------------------ ---------- 
    1           001        1201        2005-09-01 00:00:00.000                                2007-09-02 00:00:00.000                                不适应
    2           002        1501        2007-01-01 00:00:00.000                                2007-09-10 00:00:00.000                                不适应(所影响的行数为 2 行)
    */drop table tb
      

  7.   

    DECLARE @TB TABLE(id INT,    人员ID    VARCHAR(3),  床位ID INT,   起始日期   VARCHAR(8),   终止日期  VARCHAR(8),  调整原因 NVARCHAR(5))
    INSERT @TB
    SELECT 1,  '001',  1201,  '20050901',  '20070902',  N'不适应' UNION ALL 
    SELECT 2,  '001',  1310,  '20070903',  '20080101', N'' UNION ALL 
    SELECT 3,  '002',  1501,  '20070101',  '20070910',  N'不适应' UNION ALL 
    SELECT 4,  '002',  1802,  '20070911',  '20080101',  N'' UNION ALL 
    SELECT 5,  '003',  1502,  '20050801',  '20070901',  N'死亡' UNION ALL 
    SELECT 6,  '004',  1508,  '20040101',  '20070903',  N'其他'
    SELECT 
    ID=IDENTITY(INT,1,1),
    人员ID,
    床位ID AS 老床位ID,
    新床位ID=(SELECT  床位ID FROM @TB WHERE 人员ID=T.人员ID AND 调整原因='') ,
     终止日期 AS 调整日期,
    调整原因 
    INTO #
    FROM @TB AS T
    WHERE  调整原因=N'不适应' AND NOT EXISTS(SELECT 1 FROM @TB WHERE 人员ID=T.人员ID AND 起始日期<T.起始日期)SELECT * FROM #DROP TABLE #
    /*
    ID          人员ID 老床位ID       新床位ID       调整日期     调整原因  
    ----------- ---- ----------- ----------- -------- ----- 
    1           001  1201        1310        20070902 不适应
    2           002  1501        1802        20070910 不适应
    */
      

  8.   


    select * from tb
    where  起始日期>='20070101' and  终止日期<='20070930' and 调整原因='不适应'