2011-01-27 3 views
1

を取得するには:SQL Serverの:CTEは、どのように私はこのようなCTEを持っている最後の行番号

;WITH Lastdt AS 
(
    SELECT database_name, backup_finish_date, 
    ROW_NUMBER() OVER (PARTITION BY database_name ORDER BY backup_finish_date, database_name) AS 'RowNumber' 
    FROM bckHist 
) 
SELECT database_name, backup_finish_date 
FROM Lastdt 
WHERE RowNumber = '7' 

は、どのように私は、クエリから最高数と最後の行を取得することができます(ハードコードさ置き換える7)?

答えて

1

あなたは本当に(与えられた場合)、それがさらに簡単に(あなたのクエリから)最後の行のみが必要な場合:


select database_name, max(backup_finish_date) 
from bckHist 
group by database_name 
+0

うん、私はこの方法が複雑すぎると思っていた! – atricapilla

1

これを試してみてください:

;WITH Lastdt AS 
(
    SELECT database_name, backup_finish_date, 
    ROW_NUMBER() OVER (PARTITION BY database_name ORDER BY backup_finish_date, database_name) AS 'RowNumber' 
    FROM bckHist 
) 
SELECT TOP 1 
    database_name, backup_finish_date 
FROM Lastdt 
ORDER BY RowNumber DESC 

基本的にRowNumber降順(最も最初に)ご注文、および最初のものだけを選びます。

+0

これは一つだけをretuns行、私は最後の行(最大rownumber)すべてのサブセットから(database_nameに基づいて)。 – atricapilla

+1

@atricapilla:はい、それはあなたがあなたの質問で尋ねたものです。... –

2

私はそれが簡単だと思う...

;WITH Lastdt AS 
(
    SELECT database_name, backup_finish_date, 
    ROW_NUMBER() OVER (PARTITION BY database_name ORDER BY backup_finish_date desc, database_name) AS 'RowNumber' 
    FROM bckHist 
) 
SELECT database_name, backup_finish_date 
FROM Lastdt 
WHERE RowNumber = '1' 
 
+0

いいえ、これはおそらく引用符のためにrihgtの答え – atricapilla

+0

を生成しません。RowNumber = 1 –

関連する問題