2016-05-18 2 views
0

У меня есть некоторые данные, вставленные во временную таблицу, и я хочу, чтобы показать COUNT в LOOP с помощью CURSORСоздание курсора для временной таблицы в SQL Server 2005

Вот темп таблицы: -

SELECT * 
INTO #temp 
FROM (
select distinct a.CUser_id, b.User_Id, b.first_name + ' ' + b.last_name NAME 
from inward_doc_tracking_trl a, user_mst b 
where a.CUser_id = b.mkey 
and CStatus_flag = 1 
and NStatus_flag = 4 
) AS x 
Select * from #temp order by NAME 

[! [данные TEMP TABLE] [1]] [1]

Я новичок в курсоре, любезно помочь

Я использую sql server 2005

+0

Не могли бы вы объяснить, что вы имеете в виду: «Я хочу, чтобы показать COUNT в цикле»? Вы хотите отобразить инкремент? Какова цель, которую вы хотите использовать Курсор? – PKirby

+0

Итак, у вас есть указанная выше временная таблица с установленным столбцом RECEIVED равным 0. Вы хотите, чтобы курсор пробежал каждую из этих записей (строк) и обновил столбец RECEIVED на основе определенной проверки? – PKirby

+0

Пожалуйста, дайте мне подробную информацию. Хотелось бы взглянуть на него. – PKirby

ответ

2

Согласно нашей дискуссии в чате:

DECLARE @Count INT 


SELECT * 
      INTO #temp 
      FROM (
      select distinct a.CUser_id, b.User_Id, b.first_name + ' ' + b.last_name AS NAME, 0 AS RECEIVED 
      from inward_doc_tracking_trl a, user_mst b 
      where a.CUser_id = b.mkey 
      and CStatus_flag = 1 
      and NStatus_flag = 4 
      ) AS x 


DECLARE Cur_1 CURSOR 
    FOR SELECT CUser_id, User_Id FROM #temp 


OPEN Cur_1 
DECLARE @CUser_id INT 
DECLARE @User_Id INT 
FETCH NEXT FROM Cur_1 
INTO @CUser_id, @User_Id 

    WHILE (@@FETCH_STATUS = 0) 
     BEGIN 

     SELECT @Count = COUNT(*) FROM inward_doc_tracking_trl 
     WHERE CUser_id = @CUser_id 
     AND NStatus_flag = 4 
     AND CStatus_flag = 1 
     AND a.U_datetime BETWEEN '01/04/2016' AND GETDATE() 

     UPDATE #temp 
     SET RECEIVED = @Count 
     WHERE CUser_id = @CUser_id 
     AND User_Id = @User_Id 

    FETCH NEXT FROM Cur_1 INTO @CUser_id, @User_Id 
     END 
CLOSE Cur_1 
DEALLOCATE Cur_1 

SELECT * FROM #temp 
DROP TABLE #temp 
+0

привет, необходимо внести некоторые изменения. вы можете зайти в чат здесь https://chat.stackoverflow.com/rooms/112241/discussion-between-n-k-and-pkirby – BNN

+0

ping me on chat один раз u назад .. !! – BNN

+0

Я пришел в чат, дайте мне знать, как только вы придете – BNN