ส่วนคำสั่ง HAVING ใช้ร่วมกับส่วนคำสั่ง GROUP BY ใน SQL Server (Transact-SQL) เพื่อจำกัดกลุ่มของแถวที่ส่งคืน เมื่อตรงตามเงื่อนไขจะเป็น TRUE เท่านั้น
มีไวยากรณ์ส่วนคำสั่งใน SQL Server
SELECT bieuthuc1, bieuthuc2, … bieuthuc_n,
ham_tong (bieuthuc)
FROM bang
[WHERE dieukien]
GROUP BY bieuthuc1, bieuthuc2, … bieuthuc_n
HAVING dieukie
n_having;
ชื่อตัวแปรหรือค่าตัวแปร
ham_tong
สามารถใช้เป็นฟังก์ชันเช่น SUM, COUNT, MIN, MAX หรือ AVG
bieuthuc1, bieuthuc2, . bieutuc_n
นิพจน์ไม่อยู่ในฟังก์ชันผลรวมและต้องอยู่ในอนุประโยค GROUP BY
WHERE dieukien
ตัวเลือก เงื่อนไขที่บันทึกต้องเป็นไปตามจึงจะเลือกได้
มี dieukien_having
นี่เป็นเงื่อนไขเพิ่มเติมที่ใช้เฉพาะกับผลลัพธ์ทั้งหมดเพื่อจำกัดกลุ่มของแถวที่ส่งคืน เฉพาะกลุ่มที่มีการประเมินเงื่อนไขเท่านั้นที่เป็น TRUE ในชุดผลลัพธ์
ตัวอย่างเช่น - ใช้ฟังก์ชัน SUM
SELECT bophan, SUM(soluong) AS 'Tong so luong'
FROM sanpham
GROUP BY bophan
HAVING SUM (soluong) > 1
00;
ตัวอย่างของคำสั่งย่อย HAVING ด้านบนใช้ฟังก์ชัน SUM เพื่อส่งคืนชื่อแผนกและปริมาณทั้งหมด (ในแผนกที่เกี่ยวข้อง) ส่วนคำสั่ง HAVING จะกรองผลลัพธ์เพื่อส่งคืนเฉพาะส่วนที่มีตัวเลขมากกว่า 100 เท่านั้น
ตัวอย่างเช่น - ใช้ฟังก์ชัน COUNT
SELECT thanhpho, COUNT (*) AS 'So nhanvien'
FROM nhanvien
WHERE bang = 'California'
GROUP BY thanhpho
HAVING COUN
T (*)> 20;
ตัวอย่างนี้ส่งคืนเมืองและจำนวนพนักงาน (ในเมืองนั้น) ที่อยู่ในแคลิฟอร์เนียในปัจจุบัน ส่วนคำสั่ง HAVING จะกรองเพื่อส่งคืนเฉพาะเมืองที่มีพนักงานมากกว่า 20 คน
ตัวอย่างเช่น - ใช้ฟังก์ชัน MIN
SELECTbophan, MIN (luong) AS 'Luong thap nhat'
FROM nhanvien
GROUP BY bophan
HAVING MIN
(luong)> = 50000;
ในตัวอย่างนี้ ผลลัพธ์ที่ได้คือชื่อของแต่ละแผนกและค่าแรงขั้นต่ำในแต่ละแผนก มาตรา HAVING จะส่งคืนเฉพาะชิ้นส่วนที่มีค่าแรงขั้นต่ำมากกว่าหรือเท่ากับ $50,000
ตัวอย่างเช่น - ใช้ฟังก์ชัน MAX
SELECT ho, MAX (luong) AS 'Luong cao nhat'
FROM nhanvien
GROUP BY bophan
HAVING MA
X (luong)> 34000;
ในตัวอย่างสุดท้ายนี้ ผลลัพธ์คือนามสกุลของพนักงานและเงินเดือนสูงสุดสำหรับมูลค่าของครอบครัวนั้น ส่วนคำสั่ง HAVING จะจำกัดเฉพาะค่าที่มีเงินเดือนสูงสุดมากกว่า $ 34,000