我的第一个tsql proc

时间:2015-02-03 21:12:44

标签: sql sql-server tsql

这是我的第一个tsql proc。

我必须将表中的信息分组到其他表中。在我的输入表格中,一个人可能有多条记录(name + zip + dob + incident_date

我必须将它们分组并将它们添加到其他表格

Select  Distinct
        1                               As recordid,
        r.firstname + ' ' + r.lastname  As fullname,
        STUFF
        (
            (
                Select  ',' + Cast(a.[TicketID] As Varchar)
                From    tmp a
                Where   r.[FirstName] = a.[FirstName]
                And     r.[LastName] = a.[LastName]
                And     r.zip = a.zip
                And     r.dob = a.dob 
                And     r.incidentDate = a.incidentDate
                For XML Path('')
            ), 1, 1, ''
        )   As textCol2,
        (
            Select  Count(*)    cnt 
            From    tmp a 
            Where   r.[FirstName] = a.[FirstName]  
            And     r.[LastName] = a.[LastName] 
            And     r.zip = a.zip 
            And     r.dob = a.dob 
            And     r.incidentDate = a.incidentDate
        )   count_incident
From    tmp r

以上sql的性能是否良好

或 你能建议我如何在商店程序中实现这一点 我应该打开一个循环并使用变量来连接记录

create cursor c1 
select distinct [FirstName], [LastName],
                a.zip, dob, incidentDate from tmp
open cursor c1
while 
   code to fetch records for each row in c1
   open another cursor....

1 个答案:

答案 0 :(得分:0)

肖恩·朗格已经回答了这个问题。谢谢先生

存储过程本身并不比ad hoc查询快。但是对于数百万行,你绝对需要避免使用基于游标的方法......