Sql 数一数帽子戏法

Sql 数一数帽子戏法,sql,sql-server,Sql,Sql Server,我有这样一个结果集: 结果 L W W W L L W W W 我想计算在SQL Server中W连续出现三次的次数。请帮忙 您需要的是SQL Server中的超前/滞后功能 这是一个工作示例,假设1=赢,0=输 CREATE TABLE WINLOSS ( WINLOSSID INT NOT NULL IDENTITY PRIMARY KEY, WIN BIT NOT NULL ); INSERT INTO WINLOSS VALUES (1),(0),(1),(1),(1),(0

我有这样一个结果集:

结果

L

W

W

W

L

L

W

W

W


我想计算在SQL Server中W连续出现三次的次数。请帮忙

您需要的是SQL Server中的超前/滞后功能

这是一个工作示例,假设1=赢,0=输

CREATE TABLE WINLOSS (
  WINLOSSID INT NOT NULL IDENTITY PRIMARY KEY,
  WIN BIT NOT NULL
 );

INSERT INTO WINLOSS VALUES (1),(0),(1),(1),(1),(0),(1),(0),(1),(1),(1);


WITH TMP AS (
SELECT 
    WINLOSSID, 
    WIN, 
    LAG(WIN, 1) OVER  (ORDER BY WINLOSSID) LAG1,
    LAG(WIN, 2) OVER  (ORDER BY WINLOSSID) LAG2
FROM WINLOSS
)
SELECT COUNT(1)
FROM TMP 
WHERE WIN = 1 AND LAG1 = 1 AND LAG2 = 1

请发布您遇到问题的代码。为什么要在SQL中这样做?实际数据表有多大?无法使用指定的数据。SQL表表示无序集。您的问题定义需要排序。您需要将顺序表示为数据中的一列,例如id或创建时间。