2016-07-26 5 views
0

次のような表があります。私が何をしたいか1から始まる連続した行番号のデータのみを選択する方法

enter image description here

同じジョブ名で連続しROWNOを持つ行を選択することで、それはサンプル出力です。ここ= 1 ROWNOで始まる場合に選択する必要があります。

enter image description here

お手伝いできますか?ありがとうございました。

+0

を試してみてください?なぜRowNo 4の行は有効な結果ではありませんか? – Backs

+0

は同じジョブ名を持っていないためです。同じジョブ名の連続するRownoのみを選択する必要があります。 –

+0

この情報を質問に追加 – Backs

答えて

1

は何まで...この

DECLARE @Tbl TABLE (RowNo INT, Jobname NVARCHAR(50), AuditDate DATETIME) 
INSERT INTO @Tbl 
SELECT 3, 'Backup Database Sales', '2016.07.26' UNION ALL 
SELECT 1, 'Send Autoemail Sales Report', '2016.07.26' UNION ALL 
SELECT 2, 'Send Autoemail Sales Report', '2016.07.25' UNION ALL 
SELECT 3, 'Send Autoemail Sales Report', '2016.07.24' UNION ALL 
SELECT 4, 'Update Sales Stats', '2016.07.23' UNION ALL 
SELECT 4, 'Update Sales Stats', '2016.07.22' UNION ALL 
SELECT 1, 'Generate new item codes', '2016.07.26' UNION ALL 
SELECT 2, 'Generate new item codes', '2016.07.25' 


;WITH CTE 
AS 
(
    SELECT *, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS Id FROM @Tbl  
) 


SELECT 
    * 
FROM 
    @Tbl T 
WHERE 
    EXISTS 
    (
     SELECT TOP 1 
      1 
     FROM 
     (
      SELECT 
       C.Jobname, 
       MIN(C.RowNo) MinRowNo, 
       MAX(C.RowNo) MaxRow 
      FROM 
       CTE C 
      GROUP BY 
       C.Jobname, 
       C.Id - C.RowNo 
     ) A 
     WHERE 
      A.MinRowNo <> A.MaxRow AND 
      A.MinRowNo = 1 AND 
      A.Jobname = T.Jobname AND 
      T.RowNo BETWEEN A.MinRowNo AND A.MaxRow 
    ) 

出力

RowNo  Jobname           AuditDate 
----------- -------------------------------------------------- ----------------------- 
1   Send Autoemail Sales Report      2016-07-26 00:00:00.000 
2   Send Autoemail Sales Report      2016-07-25 00:00:00.000 
3   Send Autoemail Sales Report      2016-07-24 00:00:00.000 
1   Generate new item codes       2016-07-26 00:00:00.000 
2   Generate new item codes       2016-07-25 00:00:00.000 
+1

すばらしかった!ありがとう@NEER –

0
SELECT T1.* 
     FROM 
      YourTable T1 
     INNER Join 
      YourTable T2 
        ON T1.RowNo = 1 AND T2.RowNo =1 AND T1.JobName=T2.Jobname 
         OR T1.RowNo > 1 AND T1.RowNo - 1 = T2.RowNo AND T1.JobName=T2.Jobname 
関連する問題