HefazUddin Ответов: 1

Как я могу использовать цикл while в операторе case в SQL


Мы используем оператор CASE в SQL для условия bool, чтобы получить TRUE или FALSE. Но в этой ситуации мне нужно не-bool означает n-е условие и результат. На самом деле жирная часть в следующем коде. Пожалуйста помочь. Это срочно...

Что я уже пробовал:

ALTER proc [dbo].[sp_StudentList](@CreatedBy nvarchar(max))
as

begin
declare @LikedBy nvarchar(max)=(Select LikedBy from LikeStatus)
declare @TeacherRequestID int=(Select TeacherRequestID from LikeStatus where LikedBy=@CreatedBy)

declare @UserName nvarchar(max)= @CreatedBy

DECLARE @i INT = 1
DECLARE @NumberOfRows INT = (SELECT COUNT(*) FROM TeacherRequest) 

select SP.StuThana, SP.StuDist, TR.StudentName,TR.StudentCode, TR.Class, TR.Subject, TR.StuGroup,TR.StuRelation, TR.Institute,TR.Status, TR.LikeStatus,


             CASE
		 WHEN 	
		 
		 WHILE(@i <= @NumberOfRows)
			BEGIN
				@TeacherRequestID = TR.ID THEN 'Liked' Else 'Like'		
				set @i = @i + 1       
			END	 	 

		END as LikeFlag 

from StudentsProfile SP join TeacherRequest TR on SP.CreatedBy=TR.CreatedBy


--sp_StudentList 'teacher1@gmail.com'


end

Richard Deeming

Это НЕ "срочный". И даже непонятно, что ты пытаешься сделать.

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

1 Ответов

Рейтинг:
2

RickZeeland

Это кажется проблематичным, понимаете: sql server - SQL CASE with WHILE loop in not working - переполнение стека[^]
Я бы попробовал по-другому, например, с помощью Указатель, видеть: T-SQL: простой пример использования Курсора - Стив Стедман[^]
И смотрите пример Б здесь: WHILE (Transact-SQL) - SQL Server | Microsoft Docs[^]

Но в целом пытаться делать что-то процедурным способом-не лучший способ в SQL.


HefazUddin

Вы можете использовать оператор IF для сравнения ограниченного значения, но у меня есть неограниченные значения для сравнения, поэтому мне нужен цикл FOREACH или WHILE, чтобы решить эту проблему