日期:2014-05-17  浏览次数:20498 次

求SQL 一条
我有一个返回集,类似这个样:
1   A    
2   B
3   B
4   B
4   C
....

这样的一个返回集里面再加一列bit 类型的
1   A    1
2   B    1
3   B    0
4   B    0
4   C    1
....
意思是A在返回集中是不是第一次出现的,我应该怎么写?活着给个思路,谢谢。最好不要用游标。
------解决方案--------------------
引用:
额,可能是我没写清楚,那个ID并不是自增长的……

id 会重复?
05 以及以上版本可以用下面的
2000的话要用游标了

--> 测试数据:[tb]
IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]
GO 
CREATE TABLE [tb]([id] INT,[name] VARCHAR(1))
INSERT [tb]
SELECT 1,'A' UNION ALL
SELECT 2,'B' UNION ALL
SELECT 3,'B' UNION ALL
SELECT 4,'B' UNION ALL
SELECT 4,'C'
--------------开始查询--------------------------
; WITH cte AS
(
SELECT * ,row_id=ROW_NUMBER() OVER(PARTITION BY [name] ORDER BY id) FROM [tb] 
)
SELECT [id] ,[name],CASE WHEN row_id =1 THEN 1 ELSE 0 END FROM [cte]
----------------结果----------------------------
/* 
id    name    (无列名)
1    A    1
2    B    1
3    B    0
4    B    0
4    C    1
*/