Simptomai
Apsvarstykite šį scenarijų:
-
Turite kompiuterį, kuriame yra įdiegta "Microsoft SQL Server" 2012.
-
Turite užklausą, kurioje yra atvejo sakinys sakinyje Select ir Case Statement grupėje pagal sakinį.
-
Du atvejo pareiškimai vertinami kaip NULL.
-
Vykdote užklausą.
Tokiu atveju gaunate šį klaidos pranešimą:
MSG 8120, lygis 16, būsenos 1, eilutės 3Column "<stulpelio pavadinimas>" yra neleistinas sąraše pasirinkite, nes nėra agregavimo funkcijos arba sąlyga Group by.
Pvz., vykdote šią užklausą: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 Užklausoje, sakinys "when 1 = 2, tada T1. Stulp1 esanti reikšmė else 10" įvertina iki 10. Kai "10" pakeisite naudodami NULL, ši problema iškyla.Pastaba. Ši problema nekyla, kai pašalinate vieną iš bylos pareiškimų sakinyje Select arba iš grupės pagal sakinį.
Sprendimas
Pritaikius pataisą, turite įgalinti sekimo vėliavėlę, kad galėtumėte atlikti karštąsias pataisas. Kreipkitės į "Microsoft" palaikymo tarnybą, kai reikia taikyti šį pataisymą.
Problema pirmą kartą buvo išspręsta šį kaupiamąjį naujinimą SQL serverio.
Kaupiamasis naujinimas 6 SQL serverio 2012 SP1 /en-us/help/2874879
Kiekvienas naujas Kaupiamasis naujinimas, skirtas "SQL Server", yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo pridėtos prie ankstesnio kaupiamojo naujinimo. Peržiūrėkite naujausius kaupiamuosius SQL serverio naujinimus:
Statusą
"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.