FIRST_VALUE (Transact-SQL)
Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW) Titik akhir analitik Azure SQL Edge SQL di Microsoft FabricWarehouse di Microsoft Fabric
Mengembalikan nilai pertama dalam sekumpulan nilai yang diurutkan.
Sintaksis
FIRST_VALUE ( [ scalar_expression ] ) [ IGNORE NULLS | RESPECT NULLS ]
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
Catatan
Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.
Argumen
scalar_expression
Nilai yang akan dikembalikan. scalar_expression bisa berupa kolom, subkueri, atau ekspresi arbitrer lainnya yang menghasilkan satu nilai. Fungsi analitik lainnya tidak diizinkan.
[ ABAIKAN NULLS | HORMATI NULLS ]
Berlaku untuk: SQL Server (dimulai dengan SQL Server 2022 (16.x)), Azure SQL Database, Azure SQL Managed Instance, Azure SQL Edge
IGNORE NULLS
- Abaikan nilai null dalam himpunan data saat menghitung nilai pertama atas partisi.
RESPECT NULLS
- Hormati nilai null dalam himpunan data saat menghitung nilai pertama atas partisi. RESPECT NULLS
adalah perilaku default jika opsi NULLS tidak ditentukan.
Untuk informasi selengkapnya tentang argumen ini di Azure SQL Edge, lihat Menghambat nilai yang hilang.
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
partition_by_clause membagi tataan hasil yang dihasilkan oleh klausul FROM menjadi partisi tempat fungsi diterapkan. Jika tidak ditentukan, fungsi memperlakukan semua baris hasil kueri yang ditetapkan sebagai grup tunggal.
order_by_clause menentukan urutan logis tempat operasi dilakukan. Order_by_clause diperlukan.
rows_range_clause selanjutnya membatasi baris dalam partisi dengan menentukan titik awal dan akhir.
Untuk informasi selengkapnya, lihat Klausul OVER (Transact-SQL).
Jenis yang dikembalikan
Jenis yang sama dengan scalar_expression.
Keterangan
FIRST_VALUE
bersifat nondeterministik. Untuk informasi selengkapnya, lihat Fungsi deterministik dan nondeterministik.
Contoh
J. Menggunakan FIRST_VALUE atas kumpulan hasil kueri
Contoh berikut menggunakan FIRST_VALUE
untuk mengembalikan nama produk yang paling murah dalam kategori produk tertentu.
USE AdventureWorks2022;
GO
SELECT Name,
ListPrice,
FIRST_VALUE(Name) OVER (
ORDER BY ListPrice ASC
) AS LeastExpensive
FROM Production.Product
WHERE ProductSubcategoryID = 37;
Berikut adalah hasil yang ditetapkan.
Name ListPrice LeastExpensive
----------------------- --------------------- --------------------
Patch Kit/8 Patches 2.29 Patch Kit/8 Patches
Road Tire Tube 3.99 Patch Kit/8 Patches
Touring Tire Tube 4.99 Patch Kit/8 Patches
Mountain Tire Tube 4.99 Patch Kit/8 Patches
LL Road Tire 21.49 Patch Kit/8 Patches
ML Road Tire 24.99 Patch Kit/8 Patches
LL Mountain Tire 24.99 Patch Kit/8 Patches
Touring Tire 28.99 Patch Kit/8 Patches
ML Mountain Tire 29.99 Patch Kit/8 Patches
HL Road Tire 32.60 Patch Kit/8 Patches
HL Mountain Tire 35.00 Patch Kit/8 Patches
B. Menggunakan FIRST_VALUE atas partisi
Contoh berikut menggunakan FIRST_VALUE
untuk mengembalikan karyawan dengan jumlah jam liburan terkecil dibandingkan dengan karyawan lain dengan jabatan yang sama. Klausul PARTITION BY
mempartisi karyawan berdasarkan jabatan pekerjaan dan FIRST_VALUE
fungsi diterapkan ke setiap partisi secara independen. Klausa ORDER BY
yang ditentukan dalam OVER
klausul menentukan urutan logis di mana FIRST_VALUE
fungsi diterapkan ke baris di setiap partisi. Klausa ROWS UNBOUNDED PRECEDING
menentukan titik awal jendela adalah baris pertama dari setiap partisi.
USE AdventureWorks2022;
GO
SELECT JobTitle,
LastName,
VacationHours,
FIRST_VALUE(LastName) OVER (
PARTITION BY JobTitle ORDER BY VacationHours ASC ROWS UNBOUNDED PRECEDING
) AS FewestVacationHours
FROM HumanResources.Employee AS e
INNER JOIN Person.Person AS p
ON e.BusinessEntityID = p.BusinessEntityID
ORDER BY JobTitle;
Berikut adalah hasil yang ditetapkan.
JobTitle LastName VacationHours FewestVacationHours
----------------------------------- ------------------------- ------------- -------------------
Accountant Moreland 58 Moreland
Accountant Seamans 59 Moreland
Accounts Manager Liu 57 Liu
Accounts Payable Specialist Tomic 63 Tomic
Accounts Payable Specialist Sheperdigian 64 Tomic
Accounts Receivable Specialist Poe 60 Poe
Accounts Receivable Specialist Spoon 61 Poe
Accounts Receivable Specialist Walton 62 Poe
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk