Oracle
 sql >> база данни >  >> RDS >> Oracle

MAX() в ORACLE SQL

Колоните, които сте добавили в клаузата SELECT без агрегатна функция, трябва да бъдат в клаузата GROUP BY.

За да стане малко ясно:
Вземете този пример:

Имате TransactionID, AccountID, TransactionAmount, TransactionDate във вашата клауза SELECT и имате нужда от SUM(TransactionAmount) за всички дати, в този случай, ако добавите

SELECT TransactionDate, TransactionID, AccountID, SUM(TransactionAmount) 
FROM Table 
GROUP BY TransactionDate

След това ще получите грешка, защо, защото
Да приемем, че имате 4 транзакции на 20160101 и всяка транзакцияAmount е $1000
Вашето очакване за резултат ще бъде

TransDate      TransAmt
 20140101          4000

В този случай, ако въведете други атрибути в клаузата SELECT като AccountID и TransactionID, къде ще отидат те? Ето защо трябва да включим всички атрибути в клаузата GROUP каквото и да било в клаузата SELECT, с изключение на този, който е с функцията AGGREGATE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sqlplus изявление от командния ред

  2. Имам нужда от помощ за преобразуване на T-SQL заявка в поддържана от Oracle заявка

  3. таблица или изглед на oracle не съществуват от вътрешната съхранена процедура

  4. Oracle 11g - как да върна запис от функция с присъединяване към таблица

  5. C# параметризирани заявки за Oracle - сериозна и опасна грешка!