อาการ
พิจารณาสถานการณ์ต่อไปนี้:
-
คุณมีคอมพิวเตอร์ที่มี Microsoft SQL Server ๒๐๑๒ติดตั้งอยู่
-
คุณมีคิวรีที่ประกอบด้วยคำสั่งcaseในคำสั่งselectและคำสั่งCASEในคำสั่งGROUP BY
-
คำสั่งสอง กรณี ที่ประเมินเป็น NULL
-
คุณเรียกใช้คิวรี
ในสถานการณ์สมมตินี้คุณจะได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
Msg ๘๑๒๐ระดับ16สถานะ1บรรทัด 3Column ' <ชื่อคอลัมน์> ' ไม่ถูกต้องในรายการที่เลือกเนื่องจากไม่มีอยู่ในฟังก์ชันการรวมหรือส่วนคำสั่ง GROUP by
ตัวอย่างเช่นคุณเรียกใช้แบบสอบถามต่อไปนี้: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 ในคิวรีคำสั่ง "เมื่อ 1 = 2 แล้ว t1 col1 10" ประเมินเป็น10 เมื่อคุณแทนที่ "10" โดยใช้ค่า NULL ปัญหานี้เกิดขึ้นบันทึกย่อ ปัญหานี้เกิดขึ้นเมื่อคุณเอาคำสั่งกรณีออกจากคำสั่งselectหรือจากคำสั่งGROUP BY
การแก้ไข
หลังจากที่คุณนำการแก้ไขไปใช้แล้วคุณจำเป็นต้องเปิดใช้งานการตั้งค่าสถานะการติดตามเพื่อทำให้การทำงานของโปรแกรมแก้ไขด่วน โปรดติดต่อฝ่ายสนับสนุนของไมโครซอฟท์เมื่อคุณจำเป็นต้องนำการแก้ไขนี้ไปใช้
ปัญหานี้ได้รับการแก้ไขแล้วในการอัปเดตที่สะสมของ SQL Server ครั้งแรก
การอัปเดตที่สะสม6สำหรับ SQL Server ๒๐๑๒ SP1 /en-us/help/2874879
การอัปเดตที่สะสมใหม่แต่ละรายการสำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่สะสมก่อนหน้านี้ ตรวจสอบการอัปเดตที่สะสมล่าสุดสำหรับ SQL Server:
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"