如何为每个表行分配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 :(得分: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
答案 1 :(得分:0)
你在寻找像
这样的东西吗?ROW_NUMBER (Transact-SQL),RANK (Transact-SQL)或DENSE_RANK (Transact-SQL)
另请查看this example
答案 2 :(得分:0)
这就是你的意思:
UPDATE Users
SET Place = (
SELECT COUNT(*)
FROM Users
WHERE COALESCE(Votes, @p0) > @p1
)