SQL Server 2014循环,直到下一行不为空

时间:2016-12-02 19:03:04

标签: sql-server loops

我正在尝试选择列中的第二行,如果下一行为null,我想继续循环。这是我的剧本:

DECLARE @MAXID INT, @Counter INT, @clientId AS int 
SET @COUNTER = 2
SET @clientId = 11
SELECT @MAXID = COUNT(DISTINCT vw_masterView.LastVisitDate)  FROM vw_MasterView where clientId = @clientId;
WHILE (@COUNTER <= @MAXID)
BEGIN
SELECT  myData FROM 
(
  SELECT myData , ROW_NUMBER() OVER (order by  vw_masterView.LastDate desc) AS Rownumber
    FROM    vw_MasterView where clientId = @clientId 
) results
WHERE results.Rownumber =  @COUNTER  
 IF   Results.myData IS NOT NULL BREAK;
    SET @COUNTER = @COUNTER + 1
END

我收到以下错误:

  

无法绑定多部分标识符“Results.myData”。

谢谢

2 个答案:

答案 0 :(得分:1)

那里没有名为eventListener的变量。在变量处设置Results并使用变量检查myData。试试这个:

null

答案 1 :(得分:0)

您对Results.myData的使用存在严重缺陷。您不在查询本身内,因此您无法引用表和列。我相信这会完成你想要做的事情。

DECLARE @clientId AS int = 11

SELECT 
   *
FROM (
   SELECT myData , ROW_NUMBER() OVER (order by  vw_masterView.LastDate desc) AS Rownumber
   FROM    vw_MasterView
   where clientId = @clientId 
   and myData is not null
) a
WHERE Rownumber=2