使用SQL Server我试图在查询结果中标记第一个匹配项,因此对于这样的结果......
我可以像这样识别出第一个:
这可以做一个案例陈述或类似的吗?非常感谢!
由于
答案 0 :(得分:2)
使用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),表中可能有一个日期时间或其他东西用于此。
答案 1 :(得分:1)
您可以使用带有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
答案 2 :(得分:0)
使用SQL Server窗口函数尝试此操作: