以下のように、データベースに 2 つのテーブルがあります。
CUSTOMER (
ID integer Generated Always As Identity,
FIRSTNAME varchar(32) not null,
LASTNAME varchar(32) not null,
PHONENUMBER varchar(11) not null,
ADDRESS varchar(225),
primary key (id)
);
と
APP.ORDERS (
ID integer not null default AUTOINCREMENT: start 1 increment 1,
CUSTOMER_ID integer References Customer(ID) ,
EMPLOYEEID integer References Employee(ID),
DATEOFDELIVERY date,
primary key (id),
);
以下のようにこの2つのテーブルに参加しようとすると、すべて問題ありません。
SELECT CUSTOMER_ID,firstname,LASTNAME,Address,phoneNumber From APP.Customer
INNER JOIN APP.Orders ON customer.ID = customer_ID
WHERE ORDERS.dateOfDelivery Between '2012-09-01' AND '2012-11-11'
しかし、以下のように集計関数を使用すると、エラーが発生します:
SELECT Count(CUSTOMER_ID),firstname,LASTNAME,Address,phoneNumber
From APP.Customer
INNER JOIN APP.Orders ON customer.ID = customer_ID
WHERE ORDERS.dateOfDelivery Between '2012-09-01' AND '2012-11-11' ;
エラー:
[2012-07-20 08:07:04] [42Y35][30000] Column reference 'FIRSTNAME' is invalid. When the SELECT list contains at least one aggregate then all entries must be valid aggregate expressions.
上記の最後のコードを Orders.Count(CUSTOMER_ID) に変更してデータベースに正しいテーブルを伝えようとしましたが、Orders という名前のスキーマがないというエラーが発生したため、APP.Orders.Count(CUSTOMER_ID) に変更しましたが、問題を解決することはありません。エラー :Schema 'ORDERS' does not exist
更新中の質問:
私はその非常に単純な Query Like を考え出します:
SELECT COUNT(*),ID FROM Orders
このエラーが発生します:
[2012-07-20 09:01:50] [42Y35][30000] Column reference 'ID' is invalid. When the SELECT list contains at least one aggregate then all entries must be valid aggregate expressions.
したがって、集計関数と単純な列名の両方を一緒に使用することはできないことを意味しますが、同等のクエリで期待される出力をどのように提供するのだろうか? 何か案が?