在上一个问题中,你们帮我抓取了不同行中的数据。我正在使用的声明在MS SQL Server Managment Studio上完美运行。我可以在没有任何错误的情况下运行语句,并返回我需要的数据。但是,我需要在我们的前端程序上运行这些数据。当我尝试在这个程序上运行我的声明时,它只是挂起。我有一种感觉,这个声明的“With As”部分导致了问题。无论如何,通过将这个临时表放入子查询来重写这个语句?SQL“With As”替代方法
WITH Temp1 AS (SELECT
SkillTargetID = Agent_Logout.SkillTargetID,
LogoutDateTime = Agent_Logout.LogoutDateTime,
LogonDate = DateAdd(s,-1 * Agent_Logout.LoginDuration,Agent_Logout.LogoutDateTime),
ROW_NUMBER() OVER(PARTITION BY Agent_Logout.SkillTargetID ORDER BY Agent_Logout.LogoutDateTime ASC) RowVersion,
LoginDuration = Agent_Logout.LoginDuration
FROM Agent_Logout)
SELECT
AgentID = Base.SkillTargetID,
LogonDate = Base.LogonDate,
BaseLogout = Base.LogoutDateTime,
BaseDuration = Base.LoginDuration,
NextLogon = Temp1.LogonDate,
LogoutDuration = DateDiff(s,Base.LogoutDateTime,Temp1.LogonDate)
FROM Temp1 Base
LEFT JOIN Temp1 ON Base.SkillTargetID = Temp1.SkillTargetID
AND Base.RowVersion = Temp1.RowVersion-1
你如何在你的程序中执行sql? – 2010-08-19 14:33:42
我将从MS SQL Studio 2005中正确执行的代码复制并粘贴到思科前端程序中。我收到无效查询的错误代码。关键字WHERE附近存在错误。这很奇怪,因为我在声明中没有WHERE子句。 我已经尝试在语句中添加空白和有效的where子句,但这只会导致程序挂起。没有给出错误代码。 – Gilbert 2010-08-19 14:42:19
这听起来像您的前端程序可能会修改某些问题吗?如果你将所有的查询查看到视图中,然后尝试从前端程序中进行选择,该怎么办? – 2010-08-19 14:46:00