Sunday, March 29, 2009

How to dynamically number rows in a SELECT

select ให้ได้หมายเลข row มาด้วยไงหว่า

# อ้างอิงจาก table NorthWind.Orders

# select แบบธรรมดา

SELECT [OrderID]
,[CustomerID]
,[EmployeeID]
FROM [Northwind].[dbo].[Orders]

# ผลลัพจะได้ทั้งหมด 830 record

OrderID CustomerID EmployeeID

10248 VINET 5
10249 TOMSP 6
10250 HANAR 4
. . .
. . .
. . .
11077 RATTC 1


# แต่ถ้าเราต้องการให้แสดงหมายเลข row ข้างหน้าด้วย แบบนี้อ่ะ

# ผลลัพจะได้ทั้งหมด 830 record


Rank OrderID CustomerID EmployeeID

1 10248 VINET 5
2 10249 TOMSP 6
3 10250 HANAR 4
. . . .
. . . .
. . . .
830 11077 RATTC 1


# จะต้อง select ไง ไมโครซอร์ฟ มีคำตอบให้เราด้วยอ่ะ

# เราก็แก้ใหม่เป็นประมาณเนี๋ย

SELECT rank()
OVER (ORDER BY [OrderID]) as rank
,[OrderID]
,[CustomerID]
,[EmployeeID]
FROM [Northwind].[dbo].[Orders]
ORDER BY rank

# ผลที่ได้น่าจะเหมือนกันนะ ไม่แน่ใจเพราะไม่ได้ ตรวจทุก record อ่ะ

# ไม่ใช่แค่ select แบบนี้เท่านั้นที่ไ้ด้ row number ยังมีแบบอื่นอีก แต่ไม่ค่อยเข้าใจเลย

Refer:

No comments:

Post a Comment

Popular Posts