大家好,我很抱歉,但我不知道该怎么称呼这个问题。
我有一个包含信息的表,其中包括从创建行到最后一次更新所需的时间,这些信息显示在以下列中:
CREATED
LAST_UPD
它们之间的时差显示在一个名为
的单独列中SOLVED_SEC
(时间以秒显示)
现在我想从这个表中收集一些数据但是如果CREATED(这是一个日期)超出了我们公司的开放时间,那么应该在我的
中重新计算SOLVED_SEC我们的营业时间存在于名为KS_DRIFT.SYS_DATE_KS的表格中。
此表有一个名为:THIS_DATE_OPENING。
的列我在想我可以计算新的解决时间:
THIS_DATE_OPENING-LAST_UPD
但是我不太确定如何做到这一点
以下是我现在拥有的SQL:
SELECT
TIDSPUNKT, LAST_UPD, AA.CREATED,
TRUNC(AA.SOLVED_SEC/60/60,2) as LØST_TIME,
//this is my attempt
CASE
WHEN AA.CREATED >= CC.THIS_DATE_CLOSING
THEN LØST_TIME = (LAST_UPD-CC.THIS_DATE_OPENING) AS LØST_TIME
END,
COUNT(CASE WHEN AA.LAST_UPD >= CC.THIS_DATE_CLOSING THEN 1 END) as AFTER_CLOSING,
COUNT(CASE WHEN STATUS ='Færdig' THEN 1 END)as Completed_Callbacks
FROM
KS_DRIFT.NYK_SIEBEL_CALLBACK_AGENT_H_V AA
INNER JOIN
KS_DRIFT.V_TEAM_DATO BB ON AA.TIDSPUNKT = BB.DATO
RIGHT JOIN
KS_DRIFT.SYS_DATE_KS CC ON AA.TIDSPUNKT = CC.THIS_DATE
WHERE
AA.TIDSPUNKT BETWEEN '2012-04-01' AND '2013-04-04'
AND AA.AFSLUTTET_AF = BB.INITIALER
GROUP BY
AA.TIDSPUNKT, LØST_SEKUNDER, LAST_UPD, AA.CREATED
可悲的是,这不起作用。
我的问题是如果CREATED>我如何更改SOLVED_SEC的值? THIS_DATE_CLOSED?
如果您需要其他信息,请随时发表评论。
更新
我尝试了以下内容:
CASE WHEN (AA.CREATED >= CC.THIS_DATE_CLOSING) THEN (AA.LAST_UPD-CC.THIS_DATE_OPENING) END AS SOVLED_AFTER_OPENING
但是我得到了
"not a GROUP BY expression"
更新2
我的SQL语句现在看起来像这样:
SELECT TIDSPUNKT,
AA.CREATED,
LAST_UPD,
AA.AGENTGRUPPE,
TRUNC(AA.LØST_SEKUNDER/60/60,2) as LØST_TIME,
'LØST_TIME' = CASE WHEN AA.CREATED >= CC.THIS_DATE_CLOSING THEN DATEDIFF(ss, CC.THIS_DATE_OPENING, LAST_UPD) END,
COUNT(CASE WHEN AA.AGENTGRUPPE not in('Hovednumre','Privatcentre','Forsikring','Hotline','Stabe','Kunder','Erhverv','NykreditKunder','Servicecentret') THEN 1 END) as CALLBACKS_OUTSIDE_OF_KS,
COUNT(CASE WHEN AA.CREATED >= CC.THIS_DATE_CLOSING THEN 1 END) as AFTER_CLOSING,
COUNT(CASE WHEN STATUS ='Færdig' THEN 1 END)as Completed_Callbacks
FROM KS_DRIFT.NYK_SIEBEL_CALLBACK_AGENT_H_V AA
INNER JOIN KS_DRIFT.V_TEAM_DATO BB ON AA.TIDSPUNKT = BB.DATO
RIGHT JOIN KS_DRIFT.SYS_DATE_KS CC ON AA.TIDSPUNKT = CC.THIS_DATE
WHERE AA.TIDSPUNKT BETWEEN '2013-04-01' AND '2013-04-04'
AND AA.AFSLUTTET_AF = BB.INITIALER
GROUP BY AA.TIDSPUNKT, LAST_UPD, AA.CREATED, AA.LØST_SEKUNDER,
AA.AFSLUTTET_AF, AA.AGENTGRUPPE
但是我在预期的
中找不到关键字答案 0 :(得分:3)
在尝试计算时间差异时,您需要使用DATEDIFF函数。
例如:
SELECT DATEDIFF(ss, THIS_DATE_OPENING, LAST_UPD);
其中“ss”表示秒。第一个参数是您要计算的datepart。像秒或分钟或天或其他什么。
您可以在http://msdn.microsoft.com/en-us/library/aa258269(v=sql.80).aspx
找到相关文档如果我没有正确理解你的问题,请告诉我。
我也注意到你正试图这样做:
CASE WHEN AA.CREATED >= CC.THIS_DATE_CLOSING THEN LØST_TIME =(LAST_UPD-CC.THIS_DATE_OPENING) AS LØST_TIME END
请改为尝试:
'L0ST_TIME' = CASE WHEN AA.CREATED >= CC.THIS_DATE_CLOSING THEN DATEDIFF(ss, CC.THIS_DATE_OPENING, LAST_UPD) END
HTH