2010-04-18 33 views
0

我有一個表與以下記錄如何通過在不同的列

ID名稱城市

1 AAA NY

2 BBB NY

比較值在表中添加一個附加列

3 CCC LA

4 DDD LA

5 eee NY

我想通過比較「城市」列來增加一列。 col4中的值應該爲'city'列中的每個唯一值設置爲'1','city'列中的重複值爲'0'。

ID名城市COL4

1 AAA NY 1

2 BBB NY 0

3 CCC LA 1

4 DDD LA 0

5 EEE NY 0

我希望能得到一些幫助。

感謝

回答

1
Select id, name, city 
    , Case 
     When Exists( Select 1 
         From Table As T1 
         Where T1.Id < T.Id 
          And T1.city = T.city) Then 0 
     Else 1 
     End As Col4 
From Table As T 
0

這會給你不是一個子查詢,這是一次外部查詢運行的每一行更好的性能:

DECLARE @YourTable table (id int, name varchar(5), city varchar(5)) 
INSERT @YourTable VALUES (1,'aaa','NY') 
INSERT @YourTable VALUES (2,'bbb','NY') 
INSERT @YourTable VALUES (3,'ccc','LA') 
INSERT @YourTable VALUES (4,'ddd','LA') 
INSERT @YourTable VALUES (5,'eee','NY') 

    SELECT 
     y.id, y.name, y.city 
      ,CASE 
       WHEN y.ID=dt.MinID THEN 1 
       ELSE 0 
      END AS col4 
     FROM @YourTable y 
      INNER JOIN (SELECT 
          City, MIN(id) AS MinID 
          FROM @YourTable 
          GROUP BY City 
         ) dt ON y.City=dt.City 
     ORDER BY id 

OUTPUT:

id   name city col4 
----------- ----- ----- ----------- 
1   aaa NY 1 
2   bbb NY 0 
3   ccc LA 1 
4   ddd LA 0 
5   eee NY 0 

(5 row(s) affected)