Příznaky
Vezměte v úvahu následující scénář:
- Máte počítač s nainstalovaným systémem Microsoft SQL Server 2012.
- Máte dotaz, který obsahuje příkaz CASE v příkazu SELECT a příkaz CASE v příkazu GROUP BY.
- Výsledkem dvou příkazů CASE je hodnota NULL.
- Spustíte dotaz.
V tomto scénáři se zobrazí následující chybová zpráva:
Poznámka
Zpráva 8120, úroveň 16, stav 1, řádek 3
Sloupec "<název >sloupce" je ve výběrovém seznamu neplatný, protože není obsažen v agregační funkci ani v klauzuli GROUP BY.
Spustíte například následující dotaz:test vytvoření databáze
přejít
použít test
přejít
Vytvoření tabulky TVT ( v1t binary(1) null)
Vytvoření tabulky TLN (ln numeric(5) not null)
přejít
vybrat
pouzdro
když 1 = 2, pak t1.col1
jinak 10
end,
pouzdro
když t1.col1 = 2, pak t1.col2
konec
z (
select t2.v1t as col1, 10 as col2
Z TVT T2
) T1
Seskupit podle
pouzdro
když 1 = 2, pak t1.col1
jinak 10
end,
pouzdro
když t1.col1 = 2, pak t1.col2
konec
go V dotazu je příkaz "když 1=2, pak t1.col1 jinak 10" vyhodnocen jako 10. K tomuto problému dojde, když nahradíte "10" pomocí hodnoty NULL.
Poznámka: K tomuto problému nedochází, pokud odeberete některý z příkazů CASE z příkazu SELECT nebo z příkazu GROUP BY.
Řešení
Po instalaci opravy musíte povolit příznak trasování, aby oprava hotfix fungovala. Pokud potřebujete tuto opravu použít, kontaktujte podporu Microsoftu.
Tento problém byl poprvé opraven v následující kumulativní aktualizaci SQL Server.
Kumulativní aktualizace 6 pro SQL Server 2012 SP1 /en-cz/help/2874879
Informace o kumulativních aktualizacích pro SQL Server
Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace pro SQL Server:
Stav
Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.