ВЫБЕРИТЕ DISTINCT в одном столбце (SQL Server 2005 или более поздней версии), используя переполнение стека

Я пробовал код, предоставленный здесь в stackoverflow, но я все еще получаю ошибку. может кто-нибудь сказать мне, где я ошибаюсь? благодарю вас! Это мой код:

$allOrdersFromToday = $Microinvest->MSelectList('SELECT * ROW_NUMBER() OVER (PARTITION BY Acct ORDER BY ID) AS RowNumber FROM Operations WHERE Date = "' . $todayDate . '" AND OperType = 2 ORDER BY Acct DESC) AS a', '*', 'a.RowNumber = 1');

который должен выводить как:

SELECT  *
FROM    (SELECT *,
ROW_NUMBER() OVER (PARTITION BY Acct ORDER BY ID) AS RowNumber
FROM   Operations
WHERE  Date = "' . $todayDate . '" AND OperType = 2 ORDER BY Acct DESC) AS a
WHERE   a.RowNumber = 1

но я получаю ошибку … 🙁

Предупреждение: mssql_query (): message: неверный синтаксис рядом с ключевым словом
‘ВЫБРАТЬ’. (уровень серьезности 15) в /var/www/functions/MssqlLibry.php on line
29

0

Решение

SQL Server не поддерживает order by в подзапросах, в большинстве случаев. Попробуй это:

SELECT  a.*
FROM (SELECT o.*,
ROW_NUMBER() OVER (PARTITION BY Acct ORDER BY ID) AS RowNumber
FROM Operations o
WHERE  Date = "' . $todayDate . '" AND
OperType = 2
) a
WHERE a.RowNumber = 1
ORDER BY a.Acct DESC;

Кроме того, у вас могут возникнуть проблемы из-за формата даты. Вы должны использовать параметризованные запросы, а не подставлять значения в строки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector