Am Anfang tut mir wirklich leid für mein schlechtes Englisch.SQL. Ich brauche zwei Reihen basierend auf Daten zu verbinden
ich brauche Reihen mit der gleichen ID vergleichen und wenn sie richtig sind verbinden sie:
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
Reihen, von denen ich bereits Daten nehmen shoul gelöscht werden.
Effekt sollte sein:
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 - ist unverändert, da ein Teil des Datums unterscheidet.
83 - sind vergleichen dann Zeile mit weniger Daten sollte entfernt werden.
198 - Übereinstimmende Liniendaten werden der ersten übereinstimmenden Zeile zugewiesen und die Zeile wird gelöscht. zweite Zeile ist unverändert, weil ein Teil des Datums anders ist.
2070 - Alle Zeilen werden zu einer zusammengeführt. Die angehängten Zeilen werden gelöscht.
Ich habe versucht, Make-Code:
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')
Was macht der 'N/A'-Wert in einer Datumsspalte? Speichern Sie Ihre Daten als Text? –