fluteplr / john fill
many thanks for your responses. here's the code:
CREATE PROCEDURE stp_rptTCOTest
AS
SET NOCOUNT ON
-- Declare variables for values to be picked up from QuestionID 3
DECLARE @SurveyID VarChar(15)
DECLARE @GL1 VarChar(100)
DECLARE @GL2 VarChar(100)
DECLARE @UserName VarChar(30)
DECLARE @Link Int
DECLARE @QuestID3 Int
DECLARE @Answer3 VarChar(255)
-- Declare variables for values to be picked up from QuestionID 4
DECLARE @QuestID4 Int
DECLARE @Answer4 VarChar(255)
-- Declare variables to check @FETCH_STATUS per cursor
DECLARE @Status1 Int -- fetch status for curQuest3
DECLARE @Status2 Int -- fetch status for curQuest4
-- Create temp table to hold results
CREATE TABLE #rpt_TCO (
SurveyID VarChar(15),
GL1 VarChar(100),
GL2 VarChar(100),
UserName VarChar(30),
Link Int,
QuestID3 Int,
Answer3 VarChar(255),
QuestID4 Int,
Answer4 VarChar(255) )
-- Get data for QuestionID 3
DECLARE curQuest3 CURSOR FOR
SELECT datSurvey.SurveyID,
datUser.GroupingLevel1 AS GL1,
datUser.GroupingLevel2 AS GL2,
datUser.UserName,
datCensusAnswer.Link,
datCensusAnswer.QuestionID,
datCensusAnswer.Answer
FROM datSurvey
LEFT OUTER JOIN datCensusAnswer ON datSurvey.Link = datCensusAnswer.Link
LEFT OUTER JOIN datUser ON datSurvey.Link = datUser.Link
INNER JOIN cfgCensusQuestion ON datCensusAnswer.QuestionID = cfgCensusQuestion.QuestionID
WHERE datSurvey.Status <> 'D'
AND cfgCensusQuestion.ShortDesc = 'M1

CMoved'
ORDER BY datSurvey.SurveyID
BEGIN
OPEN curQuest3
FETCH curQuest3
INTO @SurveyID, @GL1, @GL2, @UserName, @Link, @QuestID3, @Answer3
SELECT @Status1 = @@FETCH_STATUS
WHILE @Status1 = 0
BEGIN
IF @Status1 = 0
BEGIN
DECLARE curQuest4 CURSOR FOR -- Question 4 values
SELECT datCensusAnswer.QuestionID,
datCensusAnswer.Answer
FROM datSurvey
LEFT OUTER JOIN datCensusAnswer ON datSurvey.Link = datCensusAnswer.Link
INNER JOIN cfgCensusQuestion ON datCensusAnswer.QuestionID = cfgCensusQuestion.QuestionID
WHERE datSurvey.Status <> 'D'
AND cfgCensusQuestion.ShortDesc = 'M1

CShared'
ORDER BY datSurvey.SurveyID
OPEN curQuest4
FETCH curQuest4
INTO @QuestID4, @Answer4
SELECT @Status2 = @@FETCH_STATUS
IF @Status2 = 0
WHILE @Status2 = 0
BEGIN
INSERT INTO #rpt_TCO VALUES (@SurveyID, @GL1, @GL2, @UserName,
@Link, @QuestID3, @Answer3, @QuestID4, @Answer4)
FETCH curQuest4
INTO @QuestID4, @Answer4
SELECT @Status2 = @@FETCH_STATUS
END
ELSE
INSERT INTO #rpt_TCO VALUES (@SurveyID, @GL1, @GL2, @UserName, @Link, @QuestID3, @Answer3, NULL, NULL)
CLOSE curQuest4
DEALLOCATE curQuest4
END
FETCH curQuest3
INTO @SurveyID, @GL1, @GL2, @UserName, @Link, @QuestID3, @Answer3
SELECT @Status1 = @@FETCH_STATUS
END
CLOSE curQuest3
DEALLOCATE curQuest3
END
-- return all data in temporary table #rpt_TCO
SELECT * FROM #rpt_TCO
John
will think about your latest response