Príznaky
Zoberme si nasledujúcu situáciu:
-
Máte počítač s nainštalovanou aplikáciou Microsoft SQL Server 2012.
-
Máte dotaz, ktorý obsahuje vyhlásenie prípadu v príkaze Select a vo vyhlásení o každom prípade v príkaze Zoskupiť podľa .
-
Výkazy dvoch prípadov vyhodnotia hodnotu null.
-
Spustíte dotaz.
V tomto scenári sa zobrazí nasledujúce chybové hlásenie:
MSG 8120, úroveň 16, stav 1, riadok 3Column ' <názov stĺpca> ' je neplatný v zozname Select, pretože nie je obsiahnutý v agregačnej funkcii ani KLAUZULE Group by.
Môžete napríklad spustiť nasledovný dotaz:create database testgouse testgocreate table tvt ( v1t binary(1) null)create table tln (ln numeric(5) not null)goselectcase when 1=2 then t1.col1else 10end,casewhen t1.col1 = 2 then t1.col2endfrom (select t2.v1t as col1, 10 as col2 from tvt t2) t1group by case when 1=2 then t1.col1else 10end,casewhen t1.col1 = 2 then t1.col2endgo V dotaze sa príkaz "keď 1 = 2 potom T1. col1 else 10" vyhodnotí na hodnotu 10. Keď nahradíte hodnotu "10" použitím hodnoty NULL, tento problém sa vyskytuje.Poznámka: Tento problém sa nevyskytuje pri odstránení niektorého z výpisov z príkazu Select alebo v príkaze Zoskupiť podľa .
Riešenie
Po použití opravy musíte zapnúť príznak sledovania, aby sa rýchla oprava vykonala. Ak potrebujete túto opravu použiť, obráťte sa na oddelenie technickej podpory spoločnosti Microsoft.
Tento problém bol najskôr vyriešený v nasledujúcej kumulatívnej aktualizácii SQL servera.
Kumulatívna aktualizácia 6 pre SQL Server 2012 SP1 /en-us/help/2874879
Každá nová Kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúcej kumulatívnej aktualizácie. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:
Stav
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.