2015-02-03 3 views
0

Это мой первый процесс 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.... 
+2

Мы не можем дать вам большой ответ, потому что у вас не было много деталей. Вам абсолютно НЕ нужно использовать курсоры здесь. –

+0

жаль, что я не был чист. Мой вопрос: действительно ли мне нужна процедура, если я могу сделать это в одном sql. вставить в таблицу таргетинга выберите . Это лучший подход. Или выше код - это плохой код? – user3380585

+0

Спасибо Шон Ланге. можете ли вы предложить мне, как получить альтернативу выше sql в SP (хранимая процедура) – user3380585

ответ

0

Шон Ланге ответил на это. Спасибо Sir

Хранимая процедура не является по своей сути быстрее, чем запрос ad hoc. Но с миллионами строк вам абсолютно необходимо избегать подхода, основанного на курсорах ...

+1

Вы должны написать то, что он сказал внутри ответа. Как бы то ни было, на самом деле это не ответ. Но вы должны, вероятно, также позволить ему написать ответ, чтобы он заслужил это. –

Смежные вопросы