Hi,
Please refer below code.
SQL
DECLARE @PersonTable AS TABLE(Id INT,Name VARCHAR(50))
INSERT INTO @PersonTable VALUES
(1,'Rustam'),
(2,'Asror'),
(3,'Firuz'),
(4,'Sadriddin'),
(5,'Asror')
DECLARE @QuestionTable AS TABLE(Id INT,Question VARCHAR(50),Answer1 VARCHAR(50),Answer2 VARCHAR(50),Answer3 VARCHAR(50),Answer4 VARCHAR(50))
INSERT INTO @QuestionTable VALUES
(1,'The capital of India.','Dushanbe','Moscow','Kabul','Delhi'),
(2,'The capital of Tajikistan','Moscow','Dushanbe','Delhi','Kabul'),
(3,'The capital of Afganistan','Delhi','Kabul','Moscow','Dushanbe'),
(4,'The capital of Japan','Tokyo','Moscow','Kabul','Dushanbe')
CREATE TABLE #Temp(Id INT IDENTITY(1,1),QuestionId INT,PersonId INT,Question VARCHAR(50),Answer1 VARCHAR(50),Answer2 VARCHAR(50),Answer3 VARCHAR(50),Answer4 VARCHAR(50))
DECLARE @PersonId AS INT
DECLARE @QuestionId INT
DECLARE @TempId INT
DECLARE GetRandomData CURSOR
FOR
SELECT Id FROM @PersonTable
OPEN GetRandomData
FETCH NEXT FROM GetRandomData INTO @PersonId
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @PersonId
INSERT INTO #Temp(QuestionId,Question,Answer1,Answer2,Answer3,Answer4,PersonId)
SELECT TOP 3 Id,Question,Answer1,Answer2,Answer3,Answer4,@PersonId
FROM @QuestionTable ORDER BY NEWID()
DECLARE GetPersonData CURSOR
FOR
SELECT Id,QuestionId FROM #Temp Where PersonId = @PersonId
OPEN GetPersonData
FETCH NEXT FROM GetPersonData INTO @TempId,@QuestionId
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @QuestionId
CREATE TABLE #Question(AnswerId INT IDENTITY(1,1),QuestionId INT,Answer VARCHAR(50))
INSERT INTO #Question
SELECT Id,Answer FROM(
SELECT TOP 3 Id,Answer1,Answer2,Answer3,Answer4
FROM @QuestionTable) as a
UNPIVOT (Answer FOR Answers IN (Answer1,Answer2,Answer3,Answer4)) as unp
WHERE Id = @QuestionId
ORDER BY NEWID()
UPDATE #Temp SET Answer1 = Answer FROM #Question q
WHERE AnswerId = 1
AND PersonId = @PersonId
AND q.QuestionId = @QuestionId
AND Id = @TempId
UPDATE #Temp SET Answer2 = q.Answer FROM #Question q
WHERE AnswerId = 2
AND PersonId = @PersonId
AND q.QuestionId = @QuestionId
AND Id = @TempId
UPDATE #Temp SET Answer3 = Answer FROM #Question q
WHERE AnswerId = 3
AND PersonId = @PersonId
AND q.QuestionId = @QuestionId
AND Id = @TempId
UPDATE #Temp SET Answer4 = Answer FROM #Question q
WHERE AnswerId = 4
AND PersonId = @PersonId
AND q.QuestionId = @QuestionId
AND Id = @TempId
DROP TABLE #Question
FETCH NEXT FROM GetPersonData
INTO @TempId,@QuestionId
END
CLOSE GetPersonData;
DEALLOCATE GetPersonData;
FETCH NEXT FROM GetRandomData
INTO @PersonId
END
CLOSE GetRandomData;
DEALLOCATE GetRandomData;
SELECT Id,PersonId,Question,Answer1,Answer2,Answer3,Answer4 FROM #Temp
DROP TABLE #Temp
Screenshot
