我正在尝试选择列中的第二行,如果下一行为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”。
谢谢
答案 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