sondmk header
SQL SERVER เบื้องต้น

SQL SERVER :: SELECT + HAVING

Post by Goborijung at 2021-01-15 15:12:44 | ID: 246

คำสั่ง HAVING ใช้กรองข้อมูลที่ได้จาก GROUP BY  
HAVING จะใช้ตรวจสอบผลที่ได้จากการจัดกลุ่มแล้วเท่านั้น

Ex.
SELECT CustomerID SUM(SubTotal) AS Total, COUNT(*) AS TotalBill
FROM SalesOrder
WHERE YEAR(OrderDate) = 2019
GROUP BY CustomerID
HAVING SUM(SubTotal) >= 100000

จากตัวอย่าง จะเห็นว่าเงื่อนไข WHERE เป็นการดึงข้อมูลเฉพาะปี 2019
จากนั้น จะจัดกลุ่มและหาผลรวมของยอดซื้อ
จากนี้น จะนำผลรวมไปตรวจสอบว่า มียอดสั่งซื้อตั้งแต่ 100,000 บาทขึ้นไปหรือไม่
ถ้ามีก็ให้แสดงข้อมูลออกมา

>> ตัวอย่าง Query จริง (gssv2)

SELECT PONo, SUM(UnitCost) AS TotalUnitCost, COUNT(*) AS TotalBill
FROM TM_PO
WHERE YEAR(PODate) = 2019
GROUP BY PONo
HAVING SUM(UnitCost) >= 100000


SQL SERVER :: SELECT + INNER JOIN (ดึงข้อมูลโดยการ JOIN ตารางเข้าด้วยกัน)

Post by Goborijung at 2019-12-10 09:12:07 | ID: 258

INNER JOIN
เป็นการเชื่อมตั้งแต่ 2 ตารางขึ้นไปเข้าด้วยกัน โดยอาศัยคอลัมที่มีความสัมพันธ์กัน มาทำการเชื่อมโยงข้อมูลเข้าด้วยกัน
เงื่อนไขคือ ดึงเฉพาะคอลัมที่มีข้อมูลตรงกัน จากทั้งสองตาราง

Ex.
SELECT * FROM table_a
INNER JOIN table_b
ON table_a.ProductID = table_b.ProductID

หรือ

SELECT u.UserName,u.NickName,s.Name AS SectionName FROM [User] u 
INNER JOIN Section s
ON u.Section = s.OID
WHERE u.NickName IS NOT NULL

หรือ

SELECT u.UserName,u.NickName,s.Name AS SectionName FROM [User] AS u 
INNER JOIN Section AS s
ON u.Section = s.OID
WHERE u.NickName IS NOT NULL

SQL SERVER :: SELECT + INTO (การดึงข้อมูลจากตารางเดิม ไปสร้างเป็นข้อมูลของตารางใหม่)

Post by Goborijung at 2019-12-09 14:30:43 | ID: 254

Ex.
SELECT ContactID,Name,LastName
INTO new_table
FROM old_table

SQL SERVER :: SELECT + NTILE (การใช้ NTILE ในการแบ่งกลุ่มข้อมูล)

Post by Goborijung at 2019-12-09 14:19:08 | ID: 253

Ex.
SELECT NTILE(100) OVER(ORDER BY POQty) AS No,
*
FROM TM_PO

จากตัวอย่าง จะเป็นการแบ่งกลุ่มข้อมูลออกเป็นกลุ่มละ 100

SQL SERVER :: SELECT + RANK, DENSE_RANK จัดอันดับ

Post by Goborijung at 2019-12-09 14:13:13 | ID: 252

Ex.
SELECT RANK() OVER(ORDER BY POQty) AS Ranks, 
DENSE_RANK() OVER(ORDER BY POQty) AS DenseRank, 
*
FROM TM_PO

SQL SERVER :: SELECT + TOP (ดึงข้อมูลจากแถวแรก ถึงแถวที่กำหนด)

Post by Goborijung at 2019-12-09 13:25:31 | ID: 251

Ex.
SELECT TOP 10 ProductID, Name, Color 
FROM Product

SQL SERVER :: SELECT + WITH (การใช้ WITH เก็บผลลัพธ์ชั่วคราวจากคำสั่งคิวรี่)

Post by Goborijung at 2019-12-10 08:22:23 | ID: 257

WITH UserNames (Column_OID,Column_UserName) AS 
(
	SELECT OID,(UserName+' | '+FullName+' | '+NickName)
	FROM [User]
)
SELECT * FROM UserNames WHERE Column_UserName IS NOT NULL

SQL SERVER :: SELECT + WITH CUBE (การใช้ WITH CUBE เพื่อหาผลรวม ของผลรวม)

Post by Goborijung at 2019-12-09 13:06:08 | ID: 248

คำสั่ง WITH CUBE จะเป็นการหาผลรวมโดยขึ้นกับคอลัมน์ที่ประกาศไว้หลังคำสั่ง GROUP BY

Ex.
SELECT ProductID, SUM(Quantity) AS 'Total' 
FROM Product
WHERE ProductID BETWEEN 900 AND 910
GROUP BY Product WITH CUBE

WITH CUBE จะหาผลรวม ของผลรวมของแต่ละแถวอีกที
จากตัวอย่าง จะเป็นการหาผลรวมตามกลุ่มของสินค้าด้วย GROUP BY ProductID
จากนั้น สรุปผลรวมทั้งหมดที่ได้ด้วย WITH CUBE เป็นต้น

SQL SERVER :: SELECT BETWEEN a AND b (การใช้ BETWEEN ค้นหาข้อมูลระหว่างช่วง)

Post by Goborijung at 2019-12-06 16:29:49 | ID: 228

SELECT Description , POQty, unitCost, Amount=(POQty*UnitCost) FROM TM_PO 
WHERE POQty BETWEEN 5 AND 10

SQL SERVER :: SELECT Some Column INTO New Table

Post by Goborijung at 2020-12-21 09:38:47 | ID: 219

SELECT column_name 
INTO #new_table_temp
FROM table_name

Ex.
SELECT col1,col2 
INTO #TM_Test
FROM Product

<<<...6789101112131415>>>

Framework

Library


เครื่องมือพัฒนาเว็บ



การออกแบบและพัฒนาเว็บไซต์


Download SourceCode



copyAllright © 2016 soundmk.com