首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Case语句是答案吗

Case语句是答案吗
EN

Stack Overflow用户
提问于 2012-11-14 11:03:16
回答 3查看 174关注 0票数 2

对于我试图跟踪的每个呼叫,我都有多行数据。数据如下所示

代码语言:javascript
运行
复制
Call_ID | site | Agent_key | starttime | exit_reason
----------------------------------------------------
1234     |   7   |           |     1     | transfer
1234     |   3   |  1010101  |     15    | transfer
1234     |   7   |  2121212  |     302   | transfer
1234     |   5   |  3232323  |     680   | transfer

我想创建一个名为"first_site“的列。当starttime为min(starttime)且Agent_key不为空时,参数为site。(如果Agent_key为null,则意味着呼叫仍在呼叫中心系统中,因此我不关心那里表示的是哪个站点。

结果将如下所示

代码语言:javascript
运行
复制
Call_ID | site | Agent_key | starttime | exit_reason | first_site |
-------------------------------------------------------------------
1234     |   7   |           |     1     | transfer    |      3     |
1234     |   3   |  1010101  |     15    | transfer    |      3     |
1234     |   7   |  2121212  |     302   | transfer    |      3     |
1234     |   5   |  3232323  |     680   | transfer    |      3     |

如有任何建议,我们将不胜感激!

EN

回答 3

Stack Overflow用户

发布于 2012-11-14 11:08:55

希望这能有所帮助

代码语言:javascript
运行
复制
Select t.*, x.first_site
From YourTable t
Inner Join

(Select Call_Id,Min(site) As first_site
From YourTable
Where agent_key is not null -- Where Len(agent_key) > 0
Group By Call_Id)X

On t.Call_Id = x.Call_Id
票数 2
EN

Stack Overflow用户

发布于 2012-11-14 12:08:45

您可以使用简单的标量SUBQUERY来实现这一点。

代码语言:javascript
运行
复制
select outr.*, (select TOP 1 site
                 from tbl
                where call_id=outr.call_id
                  and agent_key is not null
             order by starttime asc) first_site
  from tbl outr;

如果你需要构建一个网站,例如"IVR“如果没有,则使用ISNULL()

代码语言:javascript
运行
复制
select outr.*, ISNULL((select TOP 1 site
                 from tbl
                where call_id=outr.call_id
                  and agent_key is not null
             order by starttime asc), 'IVR') first_site
  from tbl outr;
票数 2
EN

Stack Overflow用户

发布于 2012-11-14 16:51:25

我的查询在没有附加表连接的情况下执行。;)

代码语言:javascript
运行
复制
SELECT Call_ID, site, Agent_key, starttime, exit_reason,
       CASE WHEN MIN(CASE WHEN Agent_key IS NOT NULL THEN starttime END) OVER () = starttime 
            THEN site 
            ELSE CASE WHEN MIN(CASE WHEN Agent_key IS NOT NULL THEN starttime END) OVER () != starttime
                      THEN MIN(CASE WHEN Agent_key IS NOT NULL THEN site END) OVER () END
       END AS first_site
FROM dbo.your_table

上的演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13372392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档