2012-11-11 51 views
0

我有表TClientsPayment与领域烦恼与插入查询

idcontract,idclient,last_paid_time,paid,left_to_pay 

,我需要从这个表中插入数据到另一个表TClientsPaymentsHistory与领域

idcontract,idclient,last_paid_time,paid,late 

其中latebit场。 late可以是0或1,这取决于客户是否支付到25.xx.xxxx。如果没有late = 1

如果我做一个查询

insert into TClientPaymentHistory 
select idcontract, 
     idclient, 
     last_paid_time, 
     paid 
from TClientsPayments 

那么如何设置late场在此插入查询?

回答

2

使用SELECT子句中的CASE表达,这里是你如何能做到这样的伪代码:

insert into TClientPaymentHistory 
select idcontract, 
     idclient, 
     last_paid_time, 
     paid, 
     CASE 
     WHEN DATEDIFF(day, last_paid_time, 'tell date here') <= something THEN 0 
     ELSE 1 
     END AS late  
from TClientsPayments 

既然你没有指定你使用的是什么RDBMS中,你将需要确定根据您使用的SQL方言获取日期差异的正确方法。

2

这样的事情,虽然你将需要大约条件更加清晰:

Insert into TClientPaymentHistory (
    idcontract, idclient, last_paid_time, paid, late 
) 
Select 
    idcontract, 
    idclient, 
    last_paid_time, 
    paid, 
    Case When last_paid_time < 25.xx.xxxx then 0 else 1 end 
From 
    TclientPayments