SQL Server LEAD() 関数

Sql Server Lead Guan Shu



この記事では、SQL Server での lead() 関数の操作の基本について説明します。関数の機能、構文、および実際の使用例について説明します。

SQL Server の主任機能

SQL Server のリード関数は、自己結合なしで同じ結果セット内の後続の行からデータにアクセスできるようにする分析関数です。

この関数を使用すると、現在の行より前の特定のオフセットにある行にアクセスできます。たとえば、lead 関数を使用すると、現在の行の直後の行、現在の行から 10 行目などを見つけることができます。







この機能により、データベース開発者は、結合やビューの使用などの複雑なタスクなしで行比較を実行できます。



関数の構文

次に、SQL Server での lead() 関数の構文を示します。



LEAD ( スカラー式 [ ,オフセット ] , [ デフォルト ] )
OVER ( [ partition_by_clause ] order_by_clause )

次のリストは、サポートされている引数とその機能です。





  1. scalar_expression – この引数は、定義されたオフセットに基づく戻り値を示します。これは、単一の値を返す任意の型の式にすることができます。ただし、scalar_expression の値を別の分析/ウィンドウ関数にすることはできません。
  2. オフセット - これは、値がフェッチされた現在の行位置からの行数を設定します。デフォルトでは、関数は現在の行のすぐ横にある行をフェッチします。同様に、offset パラメーターの値を分析関数または負の整数にすることはできません。
  3. default – 指定されたオフセット値がターゲット パーティションの範囲を超えている場合、このパラメーターはデフォルト値を設定します。デフォルトでは、関数は NULL を返します。
  4. PARTITION BY – partition_by 句は、結果セットをさまざまなセクションに分割するルールを定義します。次に、結果の各パーティションに関数が適用されます。
  5. ORDER BY – 各パーティションの行が適用される論理的な順序を定義します。

この関数は、scalar_expression で定義されたデータ型を返します。返される値が NULL の場合、関数は NULL を返します。

サンプルデータ

サンプル データベースを使用して、リード関数の最適な使用方法を説明します。まず、以下に示すようにクエリを使用します。



DROP DATABASE IF EXISTS インベントリ;

CREATE DATABASE インベントリ;

在庫を使用します。

DROP TABLE IF EXISTS 製品;

CREATE TABLE 製品 (
id int ID 主キーが null ではありません。
商品名 varchar(100),
メーカー varchar(50),
数量 int null ではありません。
価格 int デフォルト 0,
in_stock ビット
);
商品に挿入(商品名、メーカー、数量、価格、在庫あり)
値 ('Apple iPad Air', 'Apple', 100, 569.99, 1),
(「Samsung Galaxy Z Flip 4」、「Samsung」、302、1569.00、1)、
(「ソニー プレイステーション 5」、「ソニー」、500、499.99、1)、
(「Samsung Galaxy Watch-5 Pro」、「Samsung」、600、209/.99、1)、
(「Apple Watch Series 6」、「Apple」、459、379.90、1)、
(「Apple AirPods Pro」、「Apple」、200、199.99、1)、
('55' Class S95B OLED 4K Smart TV', 'Samsung', 900, 1999.90, 1),
(「Odyssey Ark Quantum Mini-LED 曲面ゲーム画面」、「Samsung」、50、2999.90、1);

結果のテーブルは次のとおりです。

例 1 – 結果セットに対する SQL Server の lead() 関数の使用

次の例では、lead() 関数を使用して次の製品の価格を返します。

選択する
商品名、
メーカー、
量、
価格、
リード(価格、
1) オーバー (
数量で注文)
から
製品;

結果のテーブル:

最後の列から行がないため、関数は NULL を返します。

例 2 – パーティション セットで SQL Server の lead() 関数を使用する

特定のパーティションで次の製品をフェッチすることもできます。たとえば、製造元に基づいて上記のデータを分割し、各分割に lead() 関数を適用できます。

図の例は次のとおりです。

選択する
商品名、
メーカー、
量、
価格、
リード(価格、
1) オーバー (
メーカー別仕分け
数量で注文)
から
製品;

上記のクエリは、メーカーに基づいて行を分割し、各パーティションの値の次の価格を取得する必要があります。

この場合、3 つのパーティションがあります。

結論

この投稿では、SQL Server の lead() 関数の構成要素について理解しました。また、結果セットとパーティション セットに対して lead() 関数を使用する方法も学びました。