Príznaky
Pozrite si nasledujúci scenár:
- Máte počítač, v ktorom je nainštalovaný Microsoft SQL Server 2012.
- Mávate dotaz, ktorý obsahuje príkaz CASE v príkaze SELECT a príkaz CASE v príkaze GROUP BY.
- Dva príkazy CASE sa vyhodnotia ako NULL.
- Spustíte dotaz.
V takomto prípade sa zobrazí nasledujúce chybové hlásenie:
Poznámka
Msg 8120, úroveň 16, stav 1, riadok 3
Stĺpec "<Názov >stĺpca" nie je v zozname Select platný, pretože nie je obsiahnutý v agregačnej funkcii ani v klauzule GROUP BY.
Spustíte napríklad nasledujúci dotaz:test vytvorenia databázy
prejsť
Použitie testu
prejsť
create table tvt (v1t binary(1) null)
create table tln (ln numeric(5) not null)
prejsť
vybrať
veľkosť písmen
when 1=2, potom t1.col1
else 10
koniec,
veľkosť písmen
keď t1.col1 = 2, potom t1.col2
koniec
from (
Výber hodnoty T2.V1T ako stĺpca1, 10 AS COP2
Z tvt T2
) t1
Zoskupiť podľa
veľkosť písmen
when 1=2, potom t1.col1
else 10
koniec,
veľkosť písmen
keď t1.col1 = 2, potom t1.col2
koniec
Go V dotaze sa príkaz "keď 1=2 potom t1.col1 else 10" vyhodnotí ako 10. Tento problém sa vyskytne, keď nahradíte číslo 10 hodnotou NULL.
Poznámka: Tento problém sa nevyskytuje, keď odstránite príkaz CASE z príkazu SELECT alebo z príkazu GROUP BY.
Riešenie
Po použití opravy je potrebné povoliť príznak sledovania, aby rýchla oprava fungovala. Ak potrebujete použiť túto opravu, obráťte sa na oddelenie podpory spoločnosti Microsoft.
Tento problém bol prvýkrát opravený v nasledujúcej kumulatívnej aktualizácii SQL Server.
Kumulatívna aktualizácia 6 pre SQL Server 2012 SP1 /en-us/help/2874879
Informácie o kumulatívnych aktualizáciách pre SQL Server
Každá nová kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchle opravy a opravy zabezpečenia, ktoré boli zahrnuté v predchádzajúcej kumulatívnej aktualizácii. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:
Stav
Spoločnosť Microsoft potvrdila, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v časti Vzťahuje sa na.