5

現在、カウントである時間に基づいてデータを取得する複数選択サブクエリがあります。私が今やりたいことは、そのクエリに別のテーブルを導入し、元のテーブルの ID と日時に基づいてカウントすることです。

私が今持っているものは次のとおりです。

select
(
select     count(a_date)
from     t1
where     d_date
     between     '2013-01-07 00:00:00' and '2013-01-07 00:59:59'
) AS     '00:00 to 00:59',
(
select     count(a_date)
from     t1
where     d_date
     between     '2013-01-07 01:00:00' and '2013-01-07 01:59:59'
) AS     '01:00 to 01:59'

などなど、一日の終わりまで。

ID と日時に基づいてカウントを取得する別のクエリがありますが、2 つの列しかありません。1 つは c_name を表示し、もう 1 つは時間のカウントを表示します。

元。

select  t2.c_name, count(t1.a_date)
from    t2 join t1
on t2.t1_key = t1.t2_key
where   t1.d_date
    between '2013-01-07 00:00:00' and '2013-01-07 00:59:59'
group by    t2.c_id

基本的に、これら 2 つのクエリを 1 つに結合して、c_name と 1 日のすべての時間を表示できるようにしたいと考えています。

助言がありますか?

4

1 に答える 1

4

CASEステートメントの使用を検討します。

次のようなものを試してください(23列を追加):

select  c_name, 
   SUM(case when HOUR(d_date) = 0 then 1 else 0 end) '00:00 to 00:59',
   SUM(case when HOUR(d_date) = 1 then 1 else 0 end) '01:00 to 01:59'
from   t2
    join t1 on t2.t1_key = t1.t2_key 
group by c_name

そして、これがSQLFiddleです。

d_dateのWHERE基準を追加する必要があります-次のようなものです。

where  d_date between '2013-01-07 00:00:00' and '2013-01-07 23:59:59'

また

where  Date(d_date) = '2013-01-07'

幸運を!

于 2013-01-28T20:20:54.220 に答える