旋转/转置查询

问题描述 投票:0回答:1

我当前的 SQL 查询返回响应为:

select count(*) as count, appointment_status
    , cast(created_time as date) as date
from appointment_master
where created_time >= '2024-01-21'
group by appointment_status, cast(created_time as date)
order by CAST(created_time as date)

count   appointment_status   date
3         Arrived           22/01/2024
11       Prescribed         22/01/2024
4         Arrived           23/01/2024
13       Prescribed         23/01/2024
3         Arrived           24/01/2024
10       Prescribed         24/01/2024

我想要一个所需的输出:

  Date      Arrived   Prescribed
    22/01/2024    3          11
    23/01/2024    4          13
    24/01/2024    3          10
        

我现有的表数据是:

    code    appointment_status  created_time
1167    Prescribed  2024-01-22
1172    Prescribed  2024-01-22
1174    Prescribed  2024-01-22
1177    Prescribed  2024-01-22
1185    Arrived 2024-01-22   
1192    Prescribed  2024-01-23
1194    Prescribed  2024-01-23
1198    Prescribed  2024-01-23   
1223    Prescribed  2024-01-23

有人可以帮忙吗?

sql sql-server pivot response transpose
1个回答
0
投票

您可以使用

case
group by
来旋转结果集。示例查询类似于

select created_time as date , 
  sum(case appointment_status when 'Prescribed' then 1 else 0 end ) as Prescribed,
  sum(case appointment_status when 'Arrived' then 1 else 0 end ) as Arrived
from appointments
group by created_time;

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.