2016-05-27 11 views
0

現在、Dateという列のテーブルがあり、デフォルト値はgetdate()です。私はmergeステートメントを使用しており、同じ日付にファイルがアップロードされている場合にのみ更新します。別の日付の場合は、新しい行を挿入します。私の質問は、これは動作しますか:日付とのSQL Serverのマージ

var sqlCommand = string.Format(@" 
    MERGE [HEWreport] AS target USING (
    select @Property_ID as Property_ID, @val as {0} 
) AS source ON (
    target.Date = getdate() 
) WHEN MATCHED THEN UPDATE SET {0}= source.{0} 
    WHEN NOT MATCHED THEN INSERT (Property_ID, {0}) 
    VALUES (source.Property_ID, source.{0});", column); 
+1

あなたは、これは自分でテストしたことがありますか? – cyberbit

答えて

1

サンプルデータなしで構文を検証するのは難しいです。私はあなたのために働くと信じていますが、あなたは日付以上にマッチしたい、私はproperty_idを推測していますか?

現在、クエリはすべてのレコードを今日の日付に更新します。

EDIT: 使用Convert(Date, target.Date) = Convert(Date, getdate())

+0

はい、それもproperty_idと一致します。私は私の質問を複雑にしたくないので、私のコードの貼り付けから取り出しました。基本的には、毎日2つのファイルが入っています。だから私はそれが新しい行を作るときには、プロパティが異なると、日が異なる場合。私が抱えている問題は、たとえ私の日が同じであっても、同じ1つの財産について新しい行を作っているということです。 –

+0

ああ、それはgetdateも時間を返すはずです。私は編集します。 –

+0

これは機能しました。ありがとうございました –