0

次の列とサンプルデータを含むテーブルがあります。

(このデータはクエリの出力であるため、FROM () ステートメントでそのクエリを使用する必要があります)

Type|  Time              | Count
--------------------------------
1   |2013-05-09 12:00:00 | 71
2   |2013-05-09 12:00:00 | 48
3   |2013-05-09 12:00:00 | 10
3   |2013-05-09 13:00:00 | 4
2   |2013-05-16 13:00:00 | 30
1   |2013-05-16 13:00:00 | 31
1   |2013-05-16 14:00:00 | 4
3   |2013-05-16 14:00:00 | 5

時間に基づいてデータをグループ化する必要があるため、出力は次のようになります

AlarmType1 | AlarmType2 |AlarmType3| AlarmTime
--------------------------------
71         | 48         | 10       | 2013-05-09 12:00:00
31         | 30         | 4        | 2013-05-09 13:00:00
4          | 0          | 5        | 2013-05-09 14:00:00

私はこのクエリを試しました

SELECT
SUM(IF (AlarmType = '1',1,0)) as  AlarmType1,
SUM(IF (AlarmType = '2',1,0)) as  AlarmType2,
SUM(IF (AlarmType = '3',1,0)) as  AlarmType3,
AlarmHour
FROM 'Table1'
GROUP BY Time

しかし、クエリにカウントがないため、これは機能しませんでした。クエリのカウントを調整する必要があります

4

3 に答える 3

0
SELECT SUM(IF (AlarmType = '1',1,0)) as  AlarmType1,
SUM(IF (AlarmType = '2',1,0)) as  AlarmType2,
SUM(IF (AlarmType = '3',1,0)) as  AlarmType3,
AlarmHour
FROM (your query) as t group by t.Time
于 2013-10-22T06:46:57.857 に答える
0

あなたtable1のサブクエリは正しいですか?エイリアスが必要なので、そのようなものになります

SELECT
SUM(IF (AlarmType = '1',1,0)) as  AlarmType1,
SUM(IF (AlarmType = '2',1,0)) as  AlarmType2,
SUM(IF (AlarmType = '3',1,0)) as  AlarmType3,
AlarmHour
FROM (subquery giving table1) as subTable
GROUP BY subtable.Time

編集: 合計については、複数を使用しないのはなぜgroup byですか? 例えば。GROUP BY Type, Timeすべてのグループとタイプのタイプを表示しSELECT Type,Time,Sum(Count) ...ますか?

OK、何を達成しようとしているのかわかりました。「列を追加」したい場合は、を使用する必要がありますJOINS。したがって、必要なすべての列 (すべての AlarmType カウント) に対して単一のクエリを作成し、アラームの時刻である共通値でそれらを結合します。

于 2013-10-22T06:42:29.097 に答える