[英]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.