【发布时间】:2010-05-13 15:19:09
【问题描述】:
我有一个存储过程,我试图检索由逗号分隔的用户名字符串中列出的每个用户完成的最后一张票。用户可能没有与他们关联的票证,在这种情况下,我知道我只需要返回 null。我正在使用的两个表定义如下:
User
----
UserName,
FirstName,
LastName
Ticket
------
ID,
CompletionDateTime,
AssignedTo,
AssignmentDate,
StatusID
TicketStatus
------------
ID,
Comments
我创建了一个存储过程,我试图在其中返回最后一个完整的票证,以获取以逗号分隔的用户名列表。每条记录都需要包含与其关联的 cmets。目前,我正在尝试以下方法:
CREATE TABLE #Tickets
(
[UserName] nvarchar(256),
[FirstName] nvarchar(256),
[LastName] nvarchar(256),
[TicketID] int,
[DateCompleted] datetime,
[Comments] text
)
-- This variable is actually passed into the procedure
DECLARE @userList NVARCHAR(max)
SET @userList='user1,user2,user2'
-- Obtain the user information for each user
INSERT INTO #Tickets
(
[UserName],
[FirstName],
[LastName]
)
SELECT
u.[UserName],
u.[FirstName],
u.[LastName]
FROM
User u
INNER JOIN dbo.ConvertCsvToTable(@userList) l ON u.UserName=l.item
此时,我已经传入了每个用户的用户名、名字和姓氏。但是,我不知道如何实际完成每个用户的最后一张票。
我该怎么做?我相信我应该更新我创建的临时表。同时,id 不知道如何只获取更新语句中的最后一条记录。
谢谢!
【问题讨论】:
-
TicketID 是连续的(即每个用户的最后一张票是否也具有该用户所有票中的最高 ID?)以及如何加入
Ticket和User?AssignedTo是否加入了UserName?
标签: sql sql-server-2008 temp-tables