【问题标题】:How to create stored procedure to get value of previous column Entry in SQL Server 2008?如何创建存储过程以获取 SQL Server 2008 中上一列条目的值?
【发布时间】:2014-05-05 20:40:47
【问题描述】:

数据库表:UserTime

UserTimeId int(pk)
LoginStatus nvarchar

LoginStatus只存储两条信息:InOut

例如:

UserTimeId    LoginStatus
--------------------------
    1           In
    2           Out
    3           In
    4           Out   

我想创建一个存储过程来检查上一列的LoginStatus 的值是多少。

在 C# 代码中我想这样实现它:

if (StoredProcedureCheckLoginStatus='In')
{
   dothis...
}
else 
{
   do this....
}

【问题讨论】:

    标签: c# sql sql-server-2008 stored-procedures


    【解决方案1】:

    使用 CTE。附样本:

    WITH CTE as (
       SELECT 
         RN = ROW_NUMBER() OVER (ORDER BY EmployeeID),
         * 
       FROM HumanResources.Employee
     )
     SELECT
       [Previous Row].*,
       [Current Row].*,
       [Next Row].*
     FROM CTE [Current Row]
     LEFT JOIN CTE [Previous Row] ON 
       [Previous Row].RN = [Current Row].RN - 1
     LEFT JOIN CTE [Next Row] ON 
       [Next Row].RN = [Current Row].RN + 1
     WHERE
           [Current Row].EmployeeID = 5
    

    【讨论】:

    • 这是正确的答案,但如果您使用 OP 的变量会更有意义。 UserTimeId 而不是 EmployeeID.. 等等。
    • @paqogomez 27 快速评论,希望用户能够找出并填补空白:)
    • OP 是一个非常新的 SO 用户,所以这是一个很大的希望。 ;) 看起来不会发生,但这种事情正是有人会突然介入并使用你的答案,但改进它,带走你的代表。 .. FWIW。 :)
    • 不会让我烦恼太多。只要我们不断扩大经验基础。感谢您的提醒。
    猜你喜欢
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2013-09-15
    相关资源
    最近更新 更多