Я пробовал код, предоставленный здесь в 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
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;
Кроме того, у вас могут возникнуть проблемы из-за формата даты. Вы должны использовать параметризованные запросы, а не подставлять значения в строки.
Других решений пока нет …