问题二:-- 当前日期,取本月日期范围,上月日期范围,下月日期范围-- 当前日期
select getdate() 当前日期-- 上月日期范围
select 
convert(varchar(7) ,dateadd(month ,-1 , getdate()),121)+ '-01' 上月起始日期,
convert(varchar(10),dateadd(day , -1 , cast(convert(varchar(7) ,getdate(),121)+ '-01' as datetime)) ,120)-- 取本月日期范围(方法一)
select 
convert(varchar(7) ,getdate(),120)+ '-01' 本月起始日期, 
convert(varchar(10),dateadd(day , -1 , cast(convert(varchar(7) ,dateadd(month , 1 , getdate()),120)+ '-01' as datetime)),120)-- 取本月日期范围(方法二)
declare @dt datetime 
set @dt=getdate()
--set @dt='2006-8-8' 
SELECT 32-Day(@dt+32-Day(@dt))-- 下月日期范围
select 
convert(varchar(10),cast(convert(varchar(7),dateadd(month , 1 , getdate()),120)+ '-01' as datetime),120) as 下月起始日期,
convert(varchar(10),dateadd(day , -1 , cast(convert(varchar(7) ,dateadd(month , 2 , getdate()),120)+ '-01' as datetime)),120)

解决方案 »

  1.   

    还是问题2SELECT 
    DAY
    (
        DATEADD
        (
        ms, - 3,DATEADD(mm, DATEDIFF(m, 0, GETDATE()) + 1, 0)
        )
    ) AS 每月天数
    GO------create function f_getmaxday(@date datetime)
      returns int
    as
    begin
        declare @day int
        select 
            @day=case when month(@date) in (1,3,5,7,8,10,12) then 31
                      when month(@date) in (4,6,9,11) then 30
                      else 
                          case 
                              when year(@date)%400=0 or (year(@date)%100!=0 and year(@date)%4=0) then 29 
                              else 28 
                          end
                 end
        return @day
    end
    go--示例:
    select dbo.f_getmaxday('2006-08-01') AS 每月天数
    godrop function f_getmaxday
    go
      

  2.   

    问题1:表科室字典ZD_KS(BM,MC),表人员字典ZD_RY(BM,MC,KSBM),
    其中ZD_RY.KSBM意为科室编码,对应ZD_KSBM ,列出各科室的BM,MC,
    以及对应科室的人数。你的对应有错吧,应为'其中ZD_RY.KSBM意为科室编码,对应ZD_BM'
    select a.bm , a.mc , b.人数
    from ZD_KS a , 
    (select KSBM , count(*) as 人数 from ZD_RY group by ksbm) b
    where a.bm = b.ksbm-------------------------------------------------------------------
    问题2:找出当月的天数
    select DATEPART(month , getdate()) as 目前月份 , DATEDIFF(dd,getdate(),DATEADD(mm, 1, getdate())) as 当月天数
    --结果
    目前月份        当月天数        
    ----------- ----------- 
    11          30
    (所影响的行数为 1 行)---------------------------------------------------------------------
    问题3:使用一条SQL语句完成:有一个表中列出了图书代码(BOOKID)及单价(PRICE),要求查询结果为:如果PRICE 在10-20 元,返回单价;为NULL时,返回值为‘未知’;为其他值返回‘其他’。如下表所示:
    BOOKID        PRICE           返回值
    1              10              10
    2              NULL            未知
    3              25              其他create table t(BOOKID int,PRICE int)
    insert into t(bookid,price) values(1,10)
    insert into t(bookid,price) values(2,null)
    insert into t(bookid,price) values(3,25)
    go
    select bookid,price,返回值=
           CASE 
                WHEN price >= 10 and price <= 20 THEN cast(price as varchar(10))
                WHEN price is null THEN '未知'
                ELSE '其他'
           END
    from t
    drop table t
    --结果
    bookid      price       返回值        
    ----------- ----------- ---------- 
    1           10          10
    2           NULL        未知
    3           25          其他
    (所影响的行数为 3 行)-------------------------------------------------------------------
    问题4:使用一条SQL语句找到重复的值及重复的次数:有一数据表ZD_ks,其中有字段BM,MC,,请查询出在ZD_ks中BM有重复的值及重复的次数,没有的不要列出。如下表:
    BM               DUPCOUNT
    001               3
    002               2create table ZD_ks(BM varchar(10),mc varchar(10),age int)
    insert into ZD_ks(bm,mc,age) values('001','张三',1)
    insert into ZD_ks(bm,mc,age) values('001','李四',2)
    insert into ZD_ks(bm,mc,age) values('001','王五',3)
    insert into ZD_ks(bm,mc,age) values('002','赵六',1)
    insert into ZD_ks(bm,mc,age) values('002','钱七',2)
    insert into ZD_ks(bm,mc,age) values('003','孙八',1)
    go
    select BM,count(*) as DUPCOUNT from zd_ks group by bm having count(*) > 1
    drop table zd_ks
    --结果
    BM         DUPCOUNT    
    ---------- ----------- 
    001        3
    002        2
    (所影响的行数为 2 行)------------------------------------------------------------------
    问题5:有一个表(表名:ZD_KS 其中有字段BM,MC),要求查询出MC及记录的顺序号,如下表:
    序号             MC
    1                内一
    2                内二
    3                外一
    4                外二
    5                骨外
    这个确实变态,不同的排序有不同的顺序号。这是不排序的情况.如果对某个字段排序后,序号就不同了。
    create table ZD_ks(BM varchar(10),mc varchar(10))
    insert into ZD_ks(bm,mc) values('001','内一')
    insert into ZD_ks(bm,mc) values('001','内二')
    insert into ZD_ks(bm,mc) values('001','外一')
    insert into ZD_ks(bm,mc) values('002','外二')
    insert into ZD_ks(bm,mc) values('002','骨外')
    go
    select id=identity(int,1,1) , * into test from zd_ks
    select id,mc from test
    drop table zd_ks
    drop table test
    --结果
    id          mc         
    ----------- ---------- 
    1           内一
    2           内二
    3           外一
    4           外二
    5           骨外
    (所影响的行数为 5 行)-----------------------------------------------------------------------
    问题6:两个表,收费表MZ_SF(SFID INT,STATE INT);
    处方明细表MZ_CF(SFID INT, YZBM varchar(10)),
    其中MZ_SF.STATE的意义如下:bit0:=0正常数据;=1;
    退款数据;bit4:=0;门诊挂号处收费记录;=1;
    门诊收费处收费记录;要求查询出门诊收费的收费已退款的处方明细。MZ_SF.STATE的意义没看懂,如果有具体数据好办了。------------------------------------------------------------------------
    问题7:在数据库维护中,备份有几种模式,比如我们最常用的完全备份??
    它们有什么区别???
    这个自己看书。
      

  3.   

    问题6:两个表,收费表MZ_SF(SFID INT,STATE varchar(10));
    处方明细表MZ_CF(SFID INT, YZBM varchar(10)),
    其中MZ_SF.STATE的意义如下:bit0:=0正常数据;=1;
    退款数据;bit4:=0;门诊挂号处收费记录;=1;
    门诊收费处收费记录;要求查询出门诊收费的收费已退款的处方明细。MZ_SF.STATE的意义是:它有四种情况,分别为;bit0:=0正常数据   
                                            bit0:=1退款数据
                                 bit4:=0;门诊挂号处收费记录
                                 bit4:=1 门诊收费处收费记录  现要求查询出出门诊收费的收费已退款的处方明细.
      

  4.   

    bit0,bit4是什么东西?第一位第四位?