Назначьте значение для каждой строки - PullRequest
0 голосов
/ 17 марта 2011

Как назначить 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 хранимой процедуре.

Ответы [ 3 ]

1 голос
/ 17 марта 2011

Таким образом, вы хотите, чтобы все пользовательские записи, и для каждой записи, количество ..

Вы можете использовать подзапрос, но что такое @ 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 голосов
/ 17 марта 2011

Это то, что вы имеете в виду:

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

0 голосов
/ 17 марта 2011

Вы ищете что-то вроде

ROW_NUMBER (Transact-SQL) , RANK (Transact-SQL) или DENSE_RANK (Transact-SQL)

Также посмотрите на этот пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...