【发布时间】:2014-02-18 19:09:33
【问题描述】:
我需要以下内容作为唯一标识符,以便它可以正确加入更大的查询。有没有更好的方法来做到这一点?
这里是 SQL
-- Report Totals
-- Set date range and this query will look at each specific Crystal Report and how long each one takes to run.
DECLARE @StartDate DATETIME,
@EndDate DATETIME;
SELECT @StartDate = '10/01/2013', @EndDate = '1/1/2014';
SELECT COUNT(*) AS RunCount, AVG(DATEDIFF(s, SJ.queuedtime, SJ.completetime)) AS TotalTime,
AVG(DATEDIFF(s, SJ.queuedtime, SJ.starttime)) AS WaitTime,
AVG(DATEDIFF(s, SJ.starttime, SJ.completetime)) AS RunTime,
RP.label AS Report, RP.reportTitle
FROM SJob SJ
JOIN RReport R ON CAST(SUBSTRING(SJ.props, CHARINDEX('reportID=', SJ.props, 0) + 9, 36) AS UNIQUEIDENTIFIER) = R.reportID
JOIN RPhysicalReport RP ON R.physicalReportID = RP.physicalReportID
WHERE SJ.queuedtime >= @StartDate and SJ.queuedtime < @EndDate and SJ.jobClass = 'CRWPrint'
GROUP BY RP.label, RP.reportTitle
ORDER BY RunTime DESC
当我运行它时,我得到了
消息 8169,第 16 级,状态 2,第 9 行 从字符串转换为唯一标识符时转换失败。
【问题讨论】:
-
向我们展示 SJ.props 值
-
这是一个超过 2000 个字符的文本字段。其中一些是客户数据,所以我不能真正发布它。它实际上是一串连续的数据。我可以只撤回我需要的部分并且它可以工作,但是当我尝试将其转换或转换为 UI 时,它会在转换时失败。
-
@BSanders 然后显示为
RIGHT(SUBSTRING(SJ.props, CHARINDEX('reportID=', SJ.props, 0), 45), 36)的结果。我们需要知道它是否具有UNIQUEIDENTIFIER的格式。-的位置是否正确?只有从A到E的数字和字母? -
这是返回 E2715BAC-5E84-42EB-A15A-428F022BBF6E
-
@BSanders 确实转换为
UNIQUEIDENTIFIER没有任何问题
标签: sql sql-server