So schreibe ich in eine Tabelle die Ausgabe von einigen sequentiellen CTEs, und wenn ich eine Verknüpfung in einem der CTEs von einem inneren zu einem linken Join behoben, gibt es jetzt duplizierte Einträge in der Tabelle, die nicht angezeigt werden, wenn ich nur die Abfrage ohne die Einfügung ausführen.SQL Server 2012 doppelte Einträge in Tabelle schreiben von CTE
Muss ich etwas über das Erstellen und Einfügen in eine Tabelle in Bezug auf Joins in einem CTE wissen?
EDIT
create table MYTABLE
(
ID int,
Date smalldatetime,
Val1 int,
Val2 int
)
; with cte1 as (
select
a.ID,
a.Date,
a.Val1,
b.Val2
from table1 a
left join table2 b
on a.ID = b.ID
and a.Date = b.Date
)
insert into MYTABLE
(ID, Date, Val1, Val2)
select * from cte1
Wenn auf der inneren Erstellen der Tabelle kommen gibt es kein Problem mit Dubletten; Auf dem linken Join (wie oben gezeigt) scheinen Zeilen, in denen NULL-Werte vorkommen, mehrfach zu duplizieren.
Wenn Sie Hilfe bei der Fehlerbehebung benötigen, dann müssen Sie tatsächlich den Code einfügen, der problematisch ist, und Sie sollten in der Regel Beispieldaten und das gewünschte Ergebnis auch enthalten. http://meta.stackoverflow.com/questions/271055/tips-for-asking-a-good-structured-query-language-sql-question/271056 – Matt
Es scheint, dass Sie Datensätze in der linken Seitentabelle haben, die nicht entsprechende Datensätze in der rechten Seitentabelle. Wenn Sie also LEFT JOIN verwenden, kommen alle Datensätze von der linken Seite, aber wenn Sie INNER JOIN verwenden, werden sie ausgeblendet. –