2016-07-15 15 views
0

これでいくつかの投稿を見てきましたが、何らかの理由で私のコードがテーブルAのTrnIDフィールドをテーブルBのLastTrnIDに関する情報で更新しない場合、感謝。私の内部結合がただ1つのフィールドに基づいていれば、更新は機能しますが、2つのフィールドに内部結合するようにすることができますが、正しく実行していないと仮定できます。基本的には、テーブルAとテーブルBはクエリの開始時にオンザフライで作成され、私は1つのテーブルに両方のセットを配置する必要があります。最後のテーブルには人を含める必要があります。そして、各人のために1日あたりの最初と最後のトランザクションが必要です。なぜなら、私はCrdIDの内部結合とフィールドの日部分であるLastTrnDateを行っているからです。2つの基準に基づいてテーブルSQLを更新する

UPDATE 
    Table_A 
SET 
    Table_A.TrnID = Table_B.LastTrnID  
FROM Table_A 
INNER JOIN Table_B 
     ON (Table_A.CrdID = Table_B.CardholderID) 
     AND (Table_A.TrnD = Table_B.LastTrnDate) 
+1

私たちは、DBスキーマ、サンプルデータと予想される出力を必要としています。 dbまたはアプリケーションでこのダイレクトを実行していますか? [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を向上させ、より良い回答を得る方法を学ぼう。 –

+0

より多くの可能性がありますTable_A.TrnDとTable_B.LastTrnDateは、トランザクションの時間部分のために等しくなることはありません。代わりに使用:CONVERT(varchar、Table_A.TrnD、101)= CONVERT(VARCHAR、Table_B.LastTrnDate、101) –

答えて

1

あなたのクエリは、だから、おそらくデータに誤りがある(#Table_Aに余分#の横)

をOKに見えます。最初にクエリの結果を確認してください

これを試してください。SELECT更新するフィールドと新しい値が正しいかどうかを確認してください。

SELECT Table_A.TrnID, Table_B.LastTrnID  
FROM Table_A 
INNER JOIN Table_B 
     ON Table_A.CrdID = Table_B.CardholderID 
     AND Table_A.TrnD = Table_B.LastTrnDate 
+0

私はお詫び申し上げます。私がやろうとしていることは、2つの基準に基づいてテーブルAのフィールドを更新することです。現時点では、テーブルAのフィールドは、内部結合の基準が1つしかない場合にのみ更新されます。 2番目の基準を追加すると、更新プログラムは機能しなくなります。 – Mnk

+0

あなたは選択を試しましたか?何か結果を出す? –

0
UPDATE f1 
    SET f1.TrnID = f2.LastTrnID  
    FROM Table_A f1 INNER JOIN Table_B f2 
    ON (f1.CrdID = f2.CardholderID) AND (f1.TrnD = f2.LastTrnDate) 
関連する問題