Applies ToSQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Web

Symptomy

Rozpatrzmy następujący scenariusz:

  • Masz zainstalowany na komputerze program Microsoft SQL Server 2012.

  • Kwerenda zawierająca instrukcję Case w instrukcji SELECT i instrukcji Case w instrukcji Group by .

  • Wynikiem dwóch instrukcji Case jest wartość null.

  • Uruchomienie zapytania.

W tym scenariuszu jest wyświetlany następujący komunikat o błędzie:

Msg 8120, poziom 16, stan 1, 3Column wiersza "<Nazwa kolumny>" jest nieprawidłowa na liście Wybierz, ponieważ nie jest ona zawarta w funkcji agregującej ani w klauzuli Group by.

Na przykład uruchom następujące zapytanie: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 W kwerendzie instrukcja "gdy 1 = 2, a następnie T1. Kol1 else 10" daje w wyniku wartość 10. Po zamienieniu "10" przy użyciu wartości NULL ten problem występuje.UwagaTen problem nie występuje po usunięciu instrukcji Case z instrukcji SELECT lub instrukcji Group by .

Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.