sách gpt4 ai đã đi

Bài toán khó tsql - có bao nhiêu hàng là giá trị theo thứ tự

In lại 作者:行者123 更新时间:2023-12-03 21:03:00 27 4
mua khóa gpt4 Nike

假设我有一张 table

date,personid
1/1/2001 1
1/2/2001 3
1/3/2001 2
1/4/2001 2
1/5/2001 5
1/6/2001 5
1/7/2001 6

我将使用 personid 2 更新 1/2/2001 或 1/5/2001,但在我更新之前我必须确保它通过了一条规则,该规则规定你不能有一个人三天连续。我如何在 mssql 存储过程中解决这个问题?

更新:它还需要解决这个布局以及我将在 2001 年 1 月 5 日更新的地方

date,personid
1/1/2001 1
1/2/2001 3
1/3/2001 2
1/4/2001 2
1/5/2001 1
1/6/2001 2
1/7/2001 2
1/8/2001 5
1/9/2001 5
1/10/2001 6

1 Câu trả lời

我假设 ngày 是唯一的,如果不是这样请告诉我!

DECLARE @basedata TABLE ([date] UNIQUE DATE,personid INT)
INSERT INTO @basedata
SELECT GETDATE()+1, 2 union all
SELECT GETDATE()+2, 3 union all
SELECT GETDATE()+3, 2 union all
SELECT GETDATE()+4, 2 union all
SELECT GETDATE()+5, 5 union all
SELECT GETDATE()+6, 5 union all
SELECT GETDATE()+7, 6


DECLARE @date date = GETDATE()+5
DECLARE @personid int = 2


;WITH T AS
(
SELECT TOP 2 [date],personid
FROM @basedata
WHERE [date] < @date
ORDER BY [date] DESC
UNION ALL
SELECT @date, @personid
UNION ALL
SELECT TOP 2 [date],personid
FROM @basedata
WHERE [date] > @date
ORDER BY [date]
),T2 AS
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY [date]) -
ROW_NUMBER() OVER (PARTITION BY personid ORDER BY [date]) AS Grp
FROM T
)
SELECT COUNT(*) /*Will return a result if that date/personid
would cause a sequence of 3*/
FROM T2
GROUP BY personid,Grp
HAVING COUNT(*) >=3

关于sql - 硬 tsql 问题 - 有多少行值是按顺序排列的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5836341/

27 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com