我有一個表與以下記錄如何通過在不同的列
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
我希望能得到一些幫助。
感謝
我有一個表與以下記錄如何通過在不同的列
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
我希望能得到一些幫助。
感謝
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
這會給你不是一個子查詢,這是一次外部查詢運行的每一行更好的性能:
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)