Ich habe dieses CTErekursive CTE Fehler: Typen stimmen nicht überein
WITH items AS (
SELECT 1 AS lvl,
i.[No_] [Parent Item No_],
i.[No_],
i.[Description],
CAST(N'' AS NVARCHAR(20)) /* COLLATE Latin1_General_100_CS_AS */
FROM Item i
LEFT JOIN KitComponent bc ON bc.[Parent Item No_] = i.[No_]
LEFT JOIN Item ci ON ci.[No_] = bc.[No_]
GROUP BY i.[No_], i.[Description], i.[Unit Price]
UNION ALL
SELECT i.lvl + 1,
i.[No_],
i2.[No_],
i2.[Description],
CAST(bc.[Variant Code] AS NVARCHAR(20))
FROM KitComponent bc
JOIN items i ON i.[No_] = bc.[Parent Item No_]
JOIN Item i2 ON i2.[No_] = bc.[No_]
)
SELECT * FROM items WHERE [Parent Item No_] = '4000540001'
Es funktioniert auf einem Server, ohne dass kommentierte Teil die Sortierung angibt. Dann kopiere ich das Ganze in ein anderes Fenster, wo eine replizierte Kopie der gleichen Datenbank auf einem anderen Server lebt und diesen Fehler erhält.
Types don't match between the anchor and the recursive part in column "Variant Code" of recursive query "items".
ich ursprünglich auch nicht jene CAST
Funktionen hatte, arbeitete sie auf dem Server # 1 gut. Schließlich setze ich den Befehl collate im oberen Teil des CTE und dann funktioniert es auf beiden Maschinen.
ich überprüfen Sie die Version von SELECT @@VERSION
Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64)
Oct 20 2015 15:36:27
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
(Hypervisor)
Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64)
Oct 20 2015 15:36:27
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
(Hypervisor)
und sie sind identisch, so denke ich, das muss eine Option Einstellung sein, die anders ist.
Weiß jemand, wo ich sehe, welche Option das ist?
Schnelle Schätzung: Datenbanksortierung <> Tabellenkollation (Spalte). Klicken Sie mit der rechten Maustaste auf DB - Eigenschaften -> Kollatierung, und machen Sie dasselbe für Tabellen. – lad2025