-2

使用 SQL Server 我试图标记查询结果中的第一次出现,所以对于这样的结果......

在此处输入图像描述

我可以像这样识别第一个:

在此处输入图像描述

可以这样做是一个案例陈述或类似的吗?非常感谢帮助!

谢谢

4

3 回答 3

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),表中可能有一个日期时间或其他东西用于此。

于 2013-10-07T08:38:01.100 回答
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 
于 2013-10-07T08:35:56.737 回答
0

使用 SQL Server Windowing Functions 试试这个:

SQL Server MSDN 文档

于 2013-10-07T08:38:39.033 回答