繁体   English   中英

Row_number函数和变量

[英]Row_number function and variables

我在查询中使用变量时,将ROW_NUMBER放置在正确的位置时遇到问题。

我想通过检查从第一条记录到最后一条记录的每条记录来创建查找功能。 我用ROW_NUMBER()函数做的不对。 有小费吗?

/* DECLARATION */
...
/* LOOKUP */
SET @MAXID = (SELECT COUNT(ContractNr) FROM SenoOud.dbo.Financieel)
SET @COUNTER = 1
WHILE @COUNTER < @MAXID
    BEGIN
        SELECT  @ROWNUM = ROW_NUMBER() OVER (ORDER BY ContractNr) AS 'CNUM',
                @IGAS = [Factuur CO/LPG], 
                @IBRAND = [Factuur Brand], 
                @IOVERIG = [Factuur Overig],
        FROM SenOoud.dbo.Financieel
        WHERE @ROWNUM = @COUNTER
/* INSERTION */
...
SELECT @IGAS = [Factuur CO/LPG],
       @IBRAND = [Factuur Brand],
       @IOVERIG = [Factuur Overig]
FROM   (SELECT Row_number()
                 OVER (
                   ORDER BY ContractNr) AS ROWNUM,
               [Factuur CO/LPG],
               [Factuur Brand],
               [Factuur Overig]
        FROM   SenOoud.dbo.Financieel) A
WHERE  ROWNUM = @COUNTER

如果您仍然遇到错误,请尝试使用样本数据执行相同的操作

CREATE TABLE #temp
  (
     col1 VARCHAR(50),
     col2 VARCHAR(50),
     col3 VARCHAR(50)
  )

SELECT *
FROM   #temp

INSERT INTO #temp
VALUES      ('1','A319','zvxfsdg'),
            ('2','efg','ddfgdfg'),
            ('3','xdfg','ddfgxfgdfg')

SELECT col1,
       col2,
       col3
FROM   (SELECT Row_number()
                 OVER (
                   ORDER BY col1) AS ROWNUM,
               col1,
               col2,
               col3
        FROM   #temp) A
WHERE  ROWNUM = 1 

我认为这种方法最有效

SELECT Row_number()
         OVER (
           ORDER BY ContractNr) AS RNUM,
       [Factuur CO/LPG],
       [Factuur Brand],
       [Factuur Overig]
INTO   #TEMP
FROM   SenOoud.dbo.Financieel


SET @MAXID = @@ROWCOUNT
SET @COUNTER = 1
WHILE @COUNTER < @MAXID
  BEGIN
      SELECT top 1 @ROWNUM =RNUM,
             @IGAS = [Factuur CO/LPG],
             @IBRAND = [Factuur Brand],
             @IOVERIG = [Factuur Overig]
      FROM   #TEMP
      WHERE  RNUM = @COUNTER

      SET @COUNTER=@COUNTER + 1
END 

我添加了前1个以防万一

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM