0

フィールドを持つテーブルTClientsPaymentがあります

idcontract,idclient,last_paid_time,paid,left_to_pay

このテーブルから別のテーブルにデータを挿入する必要がありますTClientsPaymentsHistoryフィールド付き

idcontract,idclient,last_paid_time,paid,late

lateフィールドはどこbitですか。late0または1のいずれかになります。これは、クライアントが25.xx.xxxxまで支払ったかどうかによって異なります。そうでない場合late=1。

質問したら

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

次にlate、この挿入クエリでフィールドを設定する方法は?

4

2 に答える 2

2

CASE句の式を使用しSELECTます。これを行う方法の擬似コードを次に示します。

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ダイアレクトに応じて日付の違いを取得する正しい方法を決定する必要があります。

于 2012-11-11T15:31:27.077 に答える
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
于 2012-11-11T15:31:44.710 に答える