Symptomer
Tenk deg følgende:
-
Du har en datamaskin som har Microsoft SQL Server 2012 installert.
-
Du har en spørring som inneholder en CASE -setning i en SELECT -setning og en CASE -setning i en GROUP BY -setning.
-
To CASE -setninger evalueres som NULL.
-
Du kjører spørringen.
I dette scenariet får du følgende feilmelding:
Msg 8120, nivå 16 tilstand 1, linje 3
Kolonnen ' <Kolonnenavnfor >' er ugyldig i select-listen fordi den ikke finnes i en mengdefunksjon eller GROUP BY-setningsdelen.
For eksempel kan du kjøre følgende spørring:create database testgo
use test
go
create table tvt ( v1t binary(1) null)
create table tln (ln numeric(5) not null)
go
select
case
when 1=2 then t1.col1
else 10
end,
case
when t1.col1 = 2 then t1.col2
end
from (
select t2.v1t as col1, 10 as col2
from tvt t2
) t1
group by
case
when 1=2 then t1.col1
else 10
end,
case
when t1.col1 = 2 then t1.col2
end
go
I spørringen, i setningen "når 1 = 2 og deretter t1.col1 andre 10" evalueres til 10. Når du erstatter "10" ved hjelp av NULL, oppstår dette problemet.
Obs! Dette problemet oppstår ikke når du fjerner enten av CASE -setninger fra SELECT -setning eller fra Grupper etter -setning.
Oppløsning
Du må aktivere et sporingsflagg slik at hurtigreparasjonen fungerer når du har installert hurtigreparasjonen. Kontakt Microsoft Kundestøtte hvis du vil bruke denne hurtigreparasjonen.
Problemet ble først løst i den følgende kumulative oppdateringen av SQL Server.
Samleoppdatering 6 for SQL Server 2012 SP1/en-us/help/2874879
Hver nye kumulative oppdateringen for SQL Server inneholder alle hurtigreparasjonene og alle sikkerhetsreparasjoner som fulgte med den forrige kumulative oppdateringen. Sjekk ut de nyeste kumulative oppdateringene for SQL Server:
Status
Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".