MSSQL Befehl Case-Sensitiv (mit der Collate-Anweisung) um Groß-Kleinschreibung zu berücksichtigen
Problem: die kt.dimension04_id war nur bei Festlegung von Case-Sensitiv Eindeutig, da die Zeichenkette die gleichen Zahlen und Buchstaben hatte, allerdings sich in Großkleinschreibung unterschied.
Lösung: Einbinden der Collate Anweisung "kt.dimension04_id = dim.dimension_id COLLATE SQL_Latin1_General_Cp1_CS_AS"
Praktisches Beispiel (von KBV):
USE [topfact6Sync]
GO
/****** Object: View [dbo].[pberktrkst] Script Date: 20.02.2020 12:24:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER VIEW [dbo].[pberktrkst]
AS
SELECT
N'0' AS ktrkstID,
kostenstelle_nr AS KostNr,
CASE
WHEN kt.orgunit_nr = 10 then 'Wetzlar'
WHEN kt.orgunit_nr = 20 then 'Leipzig'
END
AS Mandant,
kt.bezeichnung AS KostSuchwort,
kt.bezeichnung AS KostDescription1,
Cast(NULL AS Varchar) KostDescription2,
1 AS KostType,
(Select top 1 dim.bezeichnung
from
[topfact6Sync].[dbo].[CSS_pds_dimensionen]
where
dim.dimension_id = kt.dimension04_id)
AS KostAddInfo1,
null AS KostAddInfo2,
kt.bezeichnung AS KTR_Bezeichnung
FROM [topfact6Sync].[dbo].[css_public_kostenstelle] as kt
LEFT Join [topfact6Sync].[dbo].[CSS_pds_dimensionen] dim on kt.dimension04_id = dim.dimension_id COLLATE SQL_Latin1_General_Cp1_CS_AS and kt.orgunit_nr=dim.orgunit_nr
LEFT Join [topfact6Sync].[dbo].[CSS_pds_dimensionen] dim2 on kt.dimension05_id = dim2.dimension_id and kt.orgunit_nr=dim2.orgunit_nr
UNION
SELECT
N'0' AS ktrkstID,
kostentraeger_nr AS KostNr,
CASE
WHEN kt.orgunit_nr = 10 then 'Wetzlar'
WHEN kt.orgunit_nr = 20 then 'Leipzig'
END
AS Mandant,
kt.bezeichnung AS KostSuchwort,
kt.bezeichnung AS KostDescription1,
Cast(NULL AS Varchar) KostDescription2,
2 AS KostType,
(Select top 1 dim.bezeichnung
from
[topfact6Sync].[dbo].[CSS_pds_dimensionen]
where
dim.dimension_id = kt.dimension04_id)
AS KostAddInfo1,
(Select top 1 dim2.bezeichnung
from
[topfact6Sync].[dbo].[CSS_pds_dimensionen]
where
dim2.dimension_id = kt.dimension05_id) AS KostAddInfo2,
kt.bezeichnung AS KTR_Bezeichnung
FROM dbo.css_pds_kostentraeger as kt
LEFT Join [topfact6Sync].[dbo].[CSS_pds_dimensionen] dim on kt.dimension04_id = dim.dimension_id COLLATE SQL_Latin1_General_Cp1_CS_AS and kt.orgunit_nr=dim.orgunit_nr
LEFT Join [topfact6Sync].[dbo].[CSS_pds_dimensionen] dim2 on kt.dimension05_id = dim2.dimension_id and kt.orgunit_nr=dim2.orgunit_nr
GO