2011-03-17 65 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 
)