私は本当に私の悪い英語のために申し訳ありません。SQL。私は日付に基づいて2つの行を接続する必要があります
私は同じIDを持つ行を比較する必要があり、それらが正しい場合は、それらを接続:私はすでにデータを取得している、そこから
id Date1 Date2 Date3 Date4
1210 2013-01-09 NULL 2018-04-10 2023-04-11
1210 2013-09-01 2018-10-04 2023-11-04 NULL
83 2009-11-17 NULL 2014-11-30 2016-11-30
83 2009-11-17 NULL NULL 2016-11-30
198 2008-04-22 NULL 2013-04-30 2015-04-30
198 2008-04-22 2013-04-30 2014-04-30 2015-04-30
198 2008-04-22 NULL NULL NULL
2070 1997-06-18 NULL 2002-09-30 N/A
2070 1997-06-18 2001-09-30 2002-09-30 NULL
2070 1997-06-18 NULL NULL 2002-09-30
行が削除されshoul。
効果は次のようになります。
id Date1 Date2 Date3 Date4
1210 2013-01-09 NULL 2018-04-10 2023-04-11
1210 2013-09-01 2018-10-04 2023-11-04 NULL
83 2009-11-17 NULL 2014-11-30 2016-11-30
198 2008-04-22 NULL 2013-04-30 2015-04-30
198 2008-04-22 2013-04-30 2014-04-30 2015-04-30
2070 1997-06-18 2001-09-30 2002-09-30 2002-09-30
1210 - 日付の一部が異なるため変更されません。
83 - 比較するデータが少ない行を削除する必要があります。
198 - 最初に一致する行に一致する行データが割り当てられ、その行が削除されます。 2行目日付の一部が異なるため変更されません。
2070 - すべての行が1つにマージされます。添付された行は削除されます。
私が試したメークコード:私はあなたの状況にあった場合
update tb
set tb.Date1 = case
when tj.Date1 is not null and (tb.Date1 is null or tb.Date1 = 'n/a') then tj.Date1 end,
tb.Date2 = case
when tj.Date2 is not null and (tb.Date2 is null or tb.Date2 = 'n/a') then tj.Date2 end,
tb.Date3 = case
when tj.Date3 is not null and (tb.Date3 is null or tb.Date3 = 'n/a') then tj.Date3 end,
tb.Date4 = case
when tj.Date4 is not null and (tb.Date4 is null or tb.Date4 = 'n/a') then tj.Date4 end
from
testcheck as tb inner join testcheck as tj on tb.Product_ID= tj.Product_ID
where (tb.Date1 = tj.Date1 or tb.Date1 is null or tj.Date1 is null or tb.Date1 = 'n/a' or tj.Date1 = 'n/a')
and (tb.Date2 = tj.Date2 or tb.Date2 is null or tj.Date2 is null or tb.Date2 = 'n/a' or tj.Date2 = 'n/a')
and (tb.Date3 = tj.Date3 or tb.Date3 is null or tj.Date3 is null or tb.Date3 = 'n/a' or tj.Date3 = 'n/a')
and (tb.Date4 = tj.Date4 or tb.Date4 is null or tj.Date4 is null or tb.Date4 = 'n/a' or tj.Date4 = 'n/a')
「N/A」の値は、日付列で何をしていますか?日付をテキストとして保存していますか? –