2つの単純な列がdatetime PayDate
あります。1日あたりint Amount
のカウントを分離するクエリを作成しようとしましたが、機能しません。Amount
SELECT YEAR(PayDate) + '/' + MONTH(PayDate) + '/' + DAY(PayDate) as a,
COUNT(Amount) as b
FROM TABLE1
GROUP BY a,b
助けてくれてありがとう。
2つの単純な列がdatetime PayDate
あります。1日あたりint Amount
のカウントを分離するクエリを作成しようとしましたが、機能しません。Amount
SELECT YEAR(PayDate) + '/' + MONTH(PayDate) + '/' + DAY(PayDate) as a,
COUNT(Amount) as b
FROM TABLE1
GROUP BY a,b
助けてくれてありがとう。
少なくともSQLServerでは、GROUPBYステートメントでエイリアスを使用することはできません。ステートメントを繰り返す必要があります。
悲しいですが本当。
SELECT YEAR(PayDate) + '/' + MONTH(PayDate) + '/' + DAY(PayDate) as a,
COUNT(Amount) as b
FROM TABLE1
GROUP BY YEAR(PayDate) + '/' + MONTH(PayDate) + '/' + DAY(PayDate),COUNT(Amount)
なぜあなたはこの厄介な文字列の連結すべてに悩まされているのですか?特定の出力が必要な場合は、クライアントでフォーマットします。可能な場合は、文字列の代わりに基本型を使用してください。
SELECT CONVERT(DATE, PayDate) AS a, COUNT(Amount) AS b
FROM dbo.TABLE1
GROUP BY CONVERT(DATE, PayDate);
正当化された複雑な式がある場合、それを繰り返さないようにする最も簡単な方法は、サブクエリまたはCTEを使用することです。
SELECT a, COUNT(b) FROM
(SELECT CONVERT(DATE, PayDate) AS a, Amount AS b FROM dbo.TABLE1) AS x
GROUP BY a;
-- or
WITH x(a,b) AS
(SELECT CONVERT(DATE, PayDate), Amount FROM dbo.TABLE1)
SELECT a, COUNT(b) FROM x
GROUP BY a;
(質問でaとbの両方でグループ化されている理由がわかりません。)
ステートメントでエイリアスを使用することはできません。GROUP BY
そして、使用する必要はありませんGROUP BY Count(Amount)
SELECT YEAR(PayDate) + '/' + MONTH(PayDate) + '/' + DAY(PayDate) as a,
COUNT(Amount) as b
FROM TABLE1
GROUP BY YEAR(PayDate) + '/' + MONTH(PayDate) + '/' + DAY(PayDate)
または、SQL Serverでこれを行う他の方法:
SELECT Convert(varchar(20),PayDate,111) as a,
COUNT(Amount) as b
FROM TABLE1
GROUP BY Convert(varchar(20),PayDate,111)
キャストと変換を参照してください
MySQLでは、を使用して購入する日時列の日付を取得することもできます。この場合、なぜエイリアスbでグループ化するのかわかりません。ほとんどの場合、日付の値で注文することもできます。
SELECT DATE(PayDate) as a, COUNT(Amount) as b
FROM TABLE1
GROUP BY a
ORDER BY a