0

誰か助けてもらえますか-以下の2つの表を参照してください

Table - Master
Field 1 - Id
Field 2 - Name
Field 3 - Address
Field 4 - Effective End Date
Filed 5 - Last updated date

Table - Child
Field 1 - Id
Field 2 - Name
Field 3 - Address

子の親からルックアップを実行する必要があります。親レコードが存在しない場合(ID、名前、アドレスに基づく)、テーブルマスターの有効終了日と最終更新日を更新します。

SQLは初めてなので、この基本的なクエリに苦労しています。

よろしく

4

3 に答える 3

2

このようにしてみてください:

UPDATE  m
SET     [Effective End Date] = GETDATE()
        , [Last updated date] = GETDATE()
FROM    Master m
WHERE   NOT EXISTS
(
    SELECT  *
    FROM    Child c 
    WHERE   c.Id = m.Id
    AND     c.Name = m.Name
    AND     c.Address = m.Address
)

同じレコードがテーブルに存在しないMasterときにレコードを更新する場合は、次のように実行できます。更新の影響を受ける行を返す句もあります。日付は今日の日付に更新されていますが、必要に応じて設定できます。Id, Name, AddressChildOUTPUT

これがSQLフィドルです

于 2013-02-19T08:07:42.450 に答える
1

子の親からルックアップを実行する必要があります。親レコードが存在しない場合(ID、名前、アドレスに基づく)、テーブルマスターの有効終了日と最終更新日を更新します。

IFお探しEXISTSですか?

IF EXISTS(
  SELECT 1 FROM Child c
  WHERE Id = @Id
  AND   Name = @Name
  AND   Address = @Address
) 
BEGIN
    UPDATE Master 
    SET [Effective End Date] = @EffectiveEndDate
        [Last updated date]  = @LastUpdatedDate
    WHERE Id = @Id
    AND   Name = @Name
    AND   Address = @Address 
END
于 2013-02-19T08:10:10.057 に答える
0

これを試して

Update Master  Set [Effective End Date] = GETDATE(), 
[Last updated date] = GETDATE()
Where id  not in ( select distinct id from Child)

単純

于 2013-02-19T08:16:29.090 に答える