日期:2014-05-17  浏览次数:20568 次

大家帮忙写两句简单的sql数据库语句
积分表: 字段 Date类型:DateTake  int类型:Score  int类型:User_ID  bit类型:FlagPay
用户表: int类型:User_ID  int类型:Scores 

FlagPay 记录是否已经发放积分
DateTake为发放积分的时间  ,当DateTake < getdate() 的时候,让用户的 Scores 加上积分表中的Score 

大概意思就是 到了时间以后,把积分发给用户。写成sql 语句,麻烦大家帮帮忙,这个我打算用job定时完成

------解决方案--------------------
把这个放到作业里面
update 用户表
set 用户表.scores=积分表.scores
from 用户表 inner join 积分表 on 积分表.User_ID=用户表.User_ID
where 积分表.flagpay='未发放' and CONVERT(DATETIME,CONVERT(VARCHAR(20),DateTake ,121))<getdate()

------解决方案--------------------
GO
WITH    tb
          AS ( SELECT   USER_ID ,
                        Score
               FROM     积分表
               WHERE    DateTake < CONVERT(DATE, GETDATE())
                        AND FlagPay = 0
             )
    UPDATE  用户表
    SET     用户表.Score = 用户表.Score + tb.Score
    FROM    tb
    WHERE   用户表.USER_ID = tb.USER_ID