使用 SQL Server 我试图标记查询结果中的第一次出现,所以对于这样的结果......
我可以像这样识别第一个:
可以这样做是一个案例陈述或类似的吗?非常感谢帮助!
谢谢
使用 SQL Server 我试图标记查询结果中的第一次出现,所以对于这样的结果......
我可以像这样识别第一个:
可以这样做是一个案例陈述或类似的吗?非常感谢帮助!
谢谢
使用 row_number() 应该启用此
select
breakfast
, case when rn = 1 then 1 else 0 end as first_occur
from (
select
breakfast
, row_number() over (partition by breakfast order by ID DESC) as rn
from your_table
) as x
但不知道顺序是什么(我假设 ID DESC),表中可能有一个日期时间或其他东西用于此。
您可以使用带有 over 子句和排名函数的 CTE(SQL 2005 及更高版本)来执行此操作。
我想你会有其他一些Breakfast
你想首先看到的标准,使用ORDER BY
来指定。
RowNumber
然后告诉你它发生了多少次。
下面的示例供您适应
DECLARE @tbl TABLE (
Breakfast VARCHAR(10)
);
INSERT INTO @tbl VALUES ('Eggs')
INSERT INTO @tbl VALUES ('Fish')
INSERT INTO @tbl VALUES ('Fish')
INSERT INTO @tbl VALUES ('Eggs')
INSERT INTO @tbl VALUES ('Bacon')
INSERT INTO @tbl VALUES ('Bacon')
INSERT INTO @tbl VALUES ('Eggs')
INSERT INTO @tbl VALUES ('Fish')
INSERT INTO @tbl VALUES ('Bacon')
;WITH t AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY Breakfast ORDER BY Breakfast) AS RowNumber
FROM @tbl
)
SELECT Breakfast, (CASE WHEN RowNumber = 1 THEN 1 ELSE 0 END) As FirstOccurance
FROM t
使用 SQL Server Windowing Functions 试试这个: