2016-07-21 3 views
1

SQL Server:結果セットの最初または最後の行の値を返す関数?このような何かを行うことができ、SQL Serverの機能がある場合、私は思ったんだけど

SELECT 
    itemId, 
    itemTitle, 
    isFirstRow(itemId) AS isFirst, 
    isLastRow(itemId) AS isLast 
FROM myTable 
ORDER BY itemId 

例の結果希望:

itemId itemTitle  isFirst isLast 
------ ------------ ------- ------ 
    1 An item  TRUE  FALSE 
    2 The world  FALSE FALSE 
    3 Code   FALSE FALSE 
    4 Something  FALSE TRUE 

を事は、私が最初と最後の行の値をしたいです必ずしも結果が返される順序ではなく、表の特定の順序を表すこと。この場合、itemIdの値がキーです。

SELECT 
    itemId, 
    itemTitle, 
    isFirstRow(itemId ascending) as isFirst, 
    isLastRow(itemId ascending) as isLast 
FROM myTable 
ORDER BY itemTitle 

itemId itemTitle  isFirst isLast 
------ ------------ ------- ------ 
    1 An item  TRUE  FALSE 
    3 Code   FALSE FALSE 
    4 Something  FALSE TRUE 
    2 The world  FALSE FALSE 

または別の例:

SELECT 
    itemId, 
    itemTitle, 
    isFirstRow(itemTitle descending) AS isFirst, 
    isLastRow(itemTitle descending) AS isLast 
FROM myTable 
WHERE itemId > 1 
ORDER BY itemId 

itemId itemTitle  isFirst isLast 
------ ------------ ------- ----------- 
    2 The world  TRUE  FALSE 
    3 Code   FALSE FALSE 
    4 Something  FALSE FALSE 

ユースケースは、フロントエンド・アプリケーションに、その結​​果セットからの結果セット、または単一レコードを返す、それだけにはフロントアプリケーションを可能にするであろう個別のクエリを作成せずに、「レコード数」や「最大/最小」戦略(テキストフィールドでは機能しない)を行うことなく、特定の順序で最初または最後のレコードかどうかを知ることができます。

サブクエリがこれを行うことができるかもしれないと思っていますが、構文がどのように見えるかはわかりません。

+0

を使用してこれを行うことができます行はありませんでしたにisLast? – SQLChao

答えて

3

あなたはあなたの第三の例ではCASEROW_NUMBER

CREATE TABLE #temp 
(
    itemid INT, 
    itemtitle VARCHAR(10), 
) 

INSERT INTO #temp VALUES (1, 'An item') 
INSERT INTO #temp VALUES (3, 'Code') 
INSERT INTO #temp VALUES (4, 'Something') 
INSERT INTO #temp VALUES (2, 'The world') 


SELECT 
    itemid, 
    itemtitle, 
    CASE WHEN ROW_NUMBER() OVER (ORDER BY itemid ASC) = 1 THEN 'TRUE' ELSE 'FALSE' END AS isFirst, 
    CASE WHEN ROW_NUMBER() OVER (ORDER BY itemid DESC) = 1 THEN 'TRUE' ELSE 'FALSE' END AS isLast 
FROM #temp 
ORDER BY itemtitle 
+0

このサイトは決して失敗しません!驚くばかり!ありがとうございました! – fdmillion

関連する問題