2011-03-17 64 views
0

如何爲每個錶行分配t-sql表達式? 例如:爲每一行分配值

Foreach user in Users 
{ 
user.Place = SELECT COUNT(*) AS [value] 
FROM [Users] AS [t0] 
WHERE (COALESCE([t0].[Votes],@p0)) > @p1; 
} 

其中Users是表。這是僞代碼,但我想在t-sql存儲過程中這樣做。

+0

你是什麼意思的「分配sql表達式」?你想在SQL中執行此操作嗎? – 2011-03-17 06:27:05

+0

您能否再詳細解釋表格結構,以及@ P0和@ P1參數的含義? – richardtallent 2011-03-17 06:27:21

+0

@MikeEast是的,我想在SQL中做到這一點。我的意思是隻分配給SQL查詢的行列結果。 – Neir0 2011-03-17 06:34:01

回答

1

所以,你希望所有的用戶記錄,並與各記錄上數..

您可以使用子查詢 - 但是@ p0和@ p1是什麼?檢查這個

SELECT u.*, Place = (
    SELECT COUNT(*) AS [value] 
    FROM [Users] AS [t0] 
    WHERE COALESCE([t0].[Votes],0) > u.Votes) 
FROM Users u 

從SQL Server 2005 +,你可以使用窗口函數

SELECT u.*, Place = Rank() over (order by u.Votes) 
FROM Users u 
0

難道這就是你的意思是:

UPDATE Users 
SET Place = (
    SELECT COUNT(*) 
    FROM Users 
    WHERE COALESCE(Votes, @p0) > @p1 
)