-1

日ごとの結果を取得する選択結果が必要です。エラーをカウントしており、次の非動作ステートメントがあります。

SELECT message, time, personid, count(*)
FROM errorlog
WHERE time BETWEEN TO_DATE(todays date - 10 days) AND TO_DATE(todays date) AND SUBSTR(message,0,3) = 'ERR'
GROUP BY DAY(time), personid, message
ORDER BY 4

これを実行すると、「DAY」と表示されます。無効な識別子です。

4

3 に答える 3

1

GROUP BY の後の列名にする必要があります。

試す:

SELECT message, DAY(time) dayTime, personid, count(*)
FROM errorlog
WHERE time BETWEEN TO_DATE(todays date - 10 days) AND TO_DATE(todays date) AND SUBSTR(message,0,3) = 'ERR'
GROUP BY dayTime, personid, message
ORDER BY 4
于 2012-04-11T10:00:19.887 に答える
0

あなたのアイテムは、あなたの にGROUP BYもある必要がありますSELECT

日ごとにグループ化して表示timeし (datetime データ型であると思われます)、どの日に 2 つのレコードがある場合、結果セットはこれら 2 つの異なる時間をどのように表示しますか? それはできないでしょう。

次のクエリでは、 の形式が結果セットに表示され、レコードがこれによってグループ化されるという意味で使用CONVERT(VARCHAR(10), time, 103)されSELECTますGROUP BYdd/MM/yyyy

SELECT message, CONVERT(VARCHAR(10), time, 103), personid, count(*)
FROM errorlog
WHERE time BETWEEN TO_DATE(todays date - 10 days) AND TO_DATE(todays date) AND SUBSTR(message,0,3) = 'ERR'
GROUP BY CONVERT(VARCHAR(10), time, 103), personid, message
ORDER BY 4
于 2012-04-11T09:55:27.227 に答える
-1

SQLサーバー?

これを修正してください:

SELECT message, DAY(time) AS [DAY], personid, count(*)
于 2012-04-11T09:57:30.073 に答える