2013-10-07 20 views
-2

使用SQL Server我想在標籤查詢結果中第一次出現,所以對於這樣的結果...SQL標識第一次出現在列表中

enter image description here

我可以找出第一每個這樣的:

enter image description here

可以這樣做是一個case語句或類似的?非常感謝!

感謝

+4

「第一次」 由什麼命令? –

回答

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

您可以使用帶過子句和排序功能的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 
相關問題