weixin_41148561
一个老辣鸡
采纳率25%
2021-03-01 21:16

sql 取值问题sql 取值问题sql 取值问题

15
已采纳

比如  表 A  姓名  月份   额度

                  张三   1       100000

                  张三    2      50000

sql 取 张三 1月21到2月10日 的额度。 每天额度当月度额度除以当月天数

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • Askio Askio 1月前

     1月21日至1月25日的额度

    select (select  edu as 额度 from A where yue = (select MONTH('2021-01-21'))) /(SELECT TIMESTAMPDIFF(DAY,'2021-01-21','2021-01-25'))

    select  edu as 额度 from A where yue = (select MONTH('2021-01-21')) 这个计算出这个日期是那个月份的

    SELECT TIMESTAMPDIFF(DAY,'2021-01-21','2021-01-25') 计算出两个日期之间相差多少天

     1月21到2月10日 的额度。 你可以分别计算出那个日期是那个月份的,然后在计算出每个月份剩余的天数,就和上面是一样的,你自己试试

    点赞 评论 复制链接分享
  • weixin_41148561 一个老辣鸡 1月前

    @subbh nvarchar,--编码
    @YD nvarchar ---月度
    as
    BEGIN
    DECLARE @a nvarchar
    DECLARE @b decimal
    DECLARE @c datetime
      select @b=ZP,@c=rq from mdzp  where suhhb=@subbh and yd=@YD
      declare @cc datetime = CONVERT( datetime, CONVERT( char(8), @c,120) + '1')  --@C月第一天
      declare @dd datetime = DATEADD( Day, -1, CONVERT( char(8), DATEADD( Month,1,@c),120) + ' 1 ') --@月最后天
      declare @ee int =   day(dateadd(mm,datediff(mm,0,@c)+1,0)-1)  --@C 最后一天日
      while (@cc<=@dd) 
        begin
            insert  into JKFJZP values (@subbh,@cc,@b/@ee,@b)
            select @cc=dateadd(d,1,@cc)
        end    
     END
    GO

    直接在suhhb 过程里面入值可以, 执行过程带参数,没数据

    点赞 评论 复制链接分享
  • xionglangs 编程爱好者熊浪 1月前

    点赞 评论 复制链接分享
  • huanhuilong 幻灰龙 1月前

    取决于数据库里记录的时间是怎样的。

    • 如果只精确到月份,那就没办法满足你的查询具体的1月21到2月10号之间额度的需求。
    • 如果数据本身精确到天,可以先查询张三每个月的平均每天额度多少,然后代码自己计算下这个区间内的总额度即可。
    点赞 评论 复制链接分享
  • weixin_41148561 一个老辣鸡 1月前

    还有钟可能就是 取张三 1月21日至1月25日的额度

    点赞 评论 复制链接分享