次のような表があります。私が何をしたいか1から始まる連続した行番号のデータのみを選択する方法
同じジョブ名で連続しROWNOを持つ行を選択することで、それはサンプル出力です。ここ= 1 ROWNOで始まる場合に選択する必要があります。
お手伝いできますか?ありがとうございました。
次のような表があります。私が何をしたいか1から始まる連続した行番号のデータのみを選択する方法
同じジョブ名で連続しROWNOを持つ行を選択することで、それはサンプル出力です。ここ= 1 ROWNOで始まる場合に選択する必要があります。
お手伝いできますか?ありがとうございました。
は何まで...この
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
すばらしかった!ありがとう@NEER –
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
を試してみてください?なぜRowNo 4の行は有効な結果ではありませんか? – Backs
は同じジョブ名を持っていないためです。同じジョブ名の連続するRownoのみを選択する必要があります。 –
この情報を質問に追加 – Backs