繁体   English   中英

组合行的复杂 SQL 查询

[英]Complex SQL query to combine rows

我有 2 张桌子,首先是

Thread { code, itr_global,campaign, contact, start_time,duration}
segment {code,thread,start_time,duration,state}

还有多个其他连接,但这两个是主要连接。 2 表被实现为 thread.code=segment.thread。

在段表中,单线程会有多行。 我需要获得价值

campaign start_time 持续时间 waititme talk_time hold_time wrap_time

wait_time 我可以得到 segment.state=7 & talke_time=segment.state=6 & wrap time as segment.state=8 我不能在一行中得到所有这些值,因为它会给我 3 个不同的行记录。 如何按照上述格式获取单行中的所有值。

您需要一些条件聚合SUM(CASE...)来获得您想要的结果。

所有这些都是基于我对你的表的结构和含义的猜测,你从你的问题中省略了。

SELECT thread.code, thread.campaign,
       SUM(segment.duration) duration,
       SUM(CASE WHEN segment.state = 7 THEN segment.duration END) waittime,
       SUM(CASE WHEN segment.state = 6 THEN segment.duration END) talk_time,
       SUM(CASE WHEN segment.state = 8 THEN segment.duration END) wrap_time,
       42 hold_time, -- you didn't say how to get hold_time
       SUM(CASE WHEN segment.state = 8 THEN segment.duration END) wrap_time
  FROM Thread
  LEFT JOIN segment ON Thread.code = segment.thread
 GROUP BY  thread.code, thread.campaign

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM