根据 SQL While 循环中的值排除数据库条目

Exclude Database entries based on a value in SQL While Loop

我的任务是在 SQL Management Studio 中编辑存储过程。我已经完成了要求的工作,但这样做的副产品是现在记录中填充了不需要的数据。我希望根据变量 LINE_CD 排除数据,并希望过滤(接收)LINE_CD <=14 或 LINE_CD = 21.

的数据

目前我已经编辑了其他记录来要求 LINE_CD <=14 OR LINE_CD = 21,但是有一个 while 循环,它使用一个变量 "MAXLINECD" 被设置在 21。(这曾经是 14,代表我们拥有的行,现在添加了新行)我只想要所有 LINE_CD <= 14 OR LINE_CD = 21.

循环是:

DECLARE @Index int, @LINE_CD int, @ORDER int
SELECT @LINE_CD = 1, @ORDER = 51
WHILE @LINE_CD <= @MAX_LINE_CD
    BEGIN

我可以这样写吗:

DECLARE @Index int, @LINE_CD int, @ORDER int
SELECT @LINE_CD = 1, @ORDER = 51
WHERE @LINE_CD =1, @ORDER = 51 not in 
    (SELECT @LINE_CD, @ORDER WHERE LINE_CD <=14 OR LINE_CD = 21)
WHILE @LINE_CD <= @MAX_LINE_CD
  BEGIN 

只给我 LINE_CD 的:1,2,3,4,5,6,7,8,9,10,11,12,13,14 & 21?

您不能使用 WHERE,因为您没有从 table 中选择一组。您可以在 WHILE 循环中评估条件。

DECLARE @Index int, @LINE_CD int, @ORDER int
SELECT @LINE_CD = 1, @ORDER = 51
WHILE @LINE_CD <= @MAX_LINE_CD
    BEGIN
    IF @LINE_CD <=14 OR @LINE_CD = 21
        BEGIN