Tal*_*ist 1 sql t-sql sql-server sql-server-2008-r2
我有下面的查询,我把它放在一起,它运行得很糟糕(因为我相信你可以看到).
我很确定它与我转换日期时间的方式有关,这样我就可以参考昨天的数据了.
dtInteractionLocalStartTime是一个日期时间字段,我希望它显示为mm/dd/yyyy而不是yyyy-mm-dd hh:mm:ss.sss
关于如何优化这个的任何想法?我已经度过了这两天,我无法弄明白.
这是我的查询:
SELECT TOP 100 PERCENT
Date ,
CONVERT(varchar, VDN) AS VDN ,
COUNT(*) AS Calls ,
Avaya
FROM ( SELECT DISTINCT TOP 100 PERCENT
CONVERT(varchar,dtInteractionLocalStartTime,101) AS Date ,
vcVectorNumber AS VDN ,
iCompoundID ,
'CM03' AS Avaya
FROM NICEHUB3ADTM.nice_dw.dbo.vwNiceDBKitInteraction AS i
WHERE CONVERT(varchar(10) , dtInteractionLocalStartTime,101) = CONVERT(varchar(10),GETDATE()-1,101)
AND iMediaTypesId = 2
AND tiCallDirectionTypeID = 1
AND tiInteractionTypeID = 2
AND iInteractionOpenReasonID & 16 = 0
AND iInteractionOpenReasonID & 4 = 0
AND iInteractionID NOT IN ( SELECT iInteractionID
FROM NICEHUB3ADTM.nice_dw.dbo.vwException AS e
WHERE i.iInteractionID = iInteractionID
AND iExceptionTypeID IN (37, 12, 12310)
)
) AS derivedtbl_1
GROUP BY Date ,
CONVERT(varchar,VDN) ,
Avaya
ORDER BY Date ,
VDN
Run Code Online (Sandbox Code Playgroud)
如果您只想要日期而不是日期时间,只需使用:
CAST(yourDate AS DATE)
Run Code Online (Sandbox Code Playgroud)
任何格式化都应该在sql之外完成,因为sql几乎没有针对这类事情进行优化,并且当你的视图逻辑工作进入模型时,最终会破坏关注点.
至少,将子查询中的转换调用更改为上面的转换,并仅将一个转换添加到最外面的选择(在分组之后).如果你有能力在其他地方重构逻辑,我仍然会完全避免它.
| 归档时间: |
|
| 查看次数: |
1588 次 |
| 最近记录: |