Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 继续。。thanks@Joseph,您提供的链接中的选定答案()与提问者在回答中提供的工作代码不同:如果你阅读了该答案,你会看到他们代码的链接:以及Tomalak版本的链接:在我的回答中,我使用表变量sthx Shannon提供每个版本的工作版本。您使用的_Sql_Sql Server_Tsql_Analytic Functions - Fatal编程技术网

Sql 继续。。thanks@Joseph,您提供的链接中的选定答案()与提问者在回答中提供的工作代码不同:如果你阅读了该答案,你会看到他们代码的链接:以及Tomalak版本的链接:在我的回答中,我使用表变量sthx Shannon提供每个版本的工作版本。您使用的

Sql 继续。。thanks@Joseph,您提供的链接中的选定答案()与提问者在回答中提供的工作代码不同:如果你阅读了该答案,你会看到他们代码的链接:以及Tomalak版本的链接:在我的回答中,我使用表变量sthx Shannon提供每个版本的工作版本。您使用的,sql,sql-server,tsql,analytic-functions,Sql,Sql Server,Tsql,Analytic Functions,继续。。thanks@Joseph,您提供的链接中的选定答案()与提问者在回答中提供的工作代码不同:如果你阅读了该答案,你会看到他们代码的链接:以及Tomalak版本的链接:在我的回答中,我使用表变量sthx Shannon提供每个版本的工作版本。您使用的是哪个版本的SQL Server?这意味着,该链接中提供的答案是错误的?但是,发布该问题的人同意该问题有效。。令人惊讶…-)@Joseph,但如果你看OP在链接问题中发布的另一个答案,你会发现他链接到的代码版本与公认答案中的不同。我不知道为什么


继续。。thanks@Joseph,您提供的链接中的选定答案()与提问者在回答中提供的工作代码不同:如果你阅读了该答案,你会看到他们代码的链接:以及Tomalak版本的链接:在我的回答中,我使用表变量sthx Shannon提供每个版本的工作版本。您使用的是哪个版本的SQL Server?这意味着,该链接中提供的答案是错误的?但是,发布该问题的人同意该问题有效。。令人惊讶…-)@Joseph,但如果你看OP在链接问题中发布的另一个答案,你会发现他链接到的代码版本与公认答案中的不同。我不知道为什么他接受了这个答案,尽管它不会像输入的那样运行。也许它在被接受后的某个时候被编辑过,也许它足以让他继续,即使没有完全正确。@Rexem:SQLServer2005和SQLServer2008。早期版本不支持CTEs或ROW_NUMBER(),如果上述查询不适用于您,请为表创建别名。将V_EMPLOYEE的最后一行修改为
)A
,即添加一个别名。@davidechico.it:在SQL Server中,派生表需要一个别名(我本应将
写成q
,但这也行)。可读性是我命名别名时的重点。您可以将rn写为RowNumber,将q写为DerivedTable,将where子句写为where DerivedTable.RowNumber>0。在我看来,6个月后,当代码在你脑海中并不新鲜时,这将大大减少混乱。@EdwardComeau:
rn
是当今世界公认的行号缩写。尝试在谷歌搜索字符串中键入“row_number over as…”,看看它给你带来了什么启示。@好的编码关键在于可读性,翻译rn(或其他缩写别名)的认知努力对你自己和维护代码的人都有好处。注意,Microsoft first hit,选择(按SalesYTD描述订购)上方的行作为行,。。。我以前也没有遇到过rn,所以您在“universal”中的里程数可能会有所不同。@Quassnoi,和second hit,so文章-几个变体,而不是rn;-)欢迎来到堆栈溢出!虽然这个代码片段可能是解决方案,但它确实有助于提高文章的质量。请记住,您将为将来的读者回答这个问题,而这些人可能不知道您的代码建议的原因。为了将来的读者的利益,请为代码片段添加一些上下文。
SELECT employee_id 
FROM V_EMPLOYEE 
WHERE row_number() OVER ( ORDER BY employee_id ) > 0 
ORDER BY Employee_ID
SELECT  employee_id
FROM    (
        SELECT  employee_id, ROW_NUMBER() OVER (ORDER BY employee_id) AS rn
        FROM    V_EMPLOYEE
        ) q
WHERE   rn > 0
ORDER BY
        Employee_ID
WITH MyCte AS 
(
    select   employee_id,
             RowNum = row_number() OVER ( order by employee_id )
    from     V_EMPLOYEE 
    ORDER BY Employee_ID
)
SELECT  employee_id
FROM    MyCte
WHERE   RowNum > 0
SELECT employee_id 
FROM  (SELECT employee_id, row_number() 
       OVER (order by employee_id) AS 'rownumber' 
       FROM V_EMPLOYEE) TableExpressionsMustHaveAnAliasForDumbReasons
WHERE rownumber > 0
WITH employee_rows AS (
  SELECT t.employee_id,
         ROW_NUMBER() OVER ( ORDER BY t.employee_id ) 'rownum'
    FROM V_EMPLOYEE t)
SELECT er.employee_id
  FROM employee_rows er
 WHERE er.rownum > 1
SELECT er.employee_id
  FROM (SELECT t.employee_id,
               ROW_NUMBER() OVER ( ORDER BY t.employee_id ) 'rownum'
          FROM V_EMPLOYEE t) er
 WHERE er.rownum > 1
WITH object_rows AS (
    SELECT object_id, 
        ROW_NUMBER() OVER ( ORDER BY object_id) RN
    FROM sys.objects)
SELECT object_id
FROM object_rows
WHERE RN > 1

SELECT object_id
FROM (SELECT object_id, 
        ROW_NUMBER() OVER ( ORDER BY object_id) RN
    FROM sys.objects) T
WHERE RN > 1
DECLARE @YourTable table (RowID int not null primary key identity, Value1 int, Value2 int, value3 int)
SET NOCOUNT ON
INSERT INTO @YourTable VALUES (1,1,1)
INSERT INTO @YourTable VALUES (1,1,2)
INSERT INTO @YourTable VALUES (1,1,3)
INSERT INTO @YourTable VALUES (1,2,1)
INSERT INTO @YourTable VALUES (1,2,2)
INSERT INTO @YourTable VALUES (1,2,3)
INSERT INTO @YourTable VALUES (1,3,1)
INSERT INTO @YourTable VALUES (1,3,2)
INSERT INTO @YourTable VALUES (1,3,3)
INSERT INTO @YourTable VALUES (2,1,1)
INSERT INTO @YourTable VALUES (2,1,2)
INSERT INTO @YourTable VALUES (2,1,3)
INSERT INTO @YourTable VALUES (2,2,1)
INSERT INTO @YourTable VALUES (2,2,2)
INSERT INTO @YourTable VALUES (2,2,3)
INSERT INTO @YourTable VALUES (2,3,1)
INSERT INTO @YourTable VALUES (2,3,2)
INSERT INTO @YourTable VALUES (2,3,3)
INSERT INTO @YourTable VALUES (3,1,1)
INSERT INTO @YourTable VALUES (3,1,2)
INSERT INTO @YourTable VALUES (3,1,3)
INSERT INTO @YourTable VALUES (3,2,1)
INSERT INTO @YourTable VALUES (3,2,2)
INSERT INTO @YourTable VALUES (3,2,3)
INSERT INTO @YourTable VALUES (3,3,1)
INSERT INTO @YourTable VALUES (3,3,2)
INSERT INTO @YourTable VALUES (3,3,3)
SET NOCOUNT OFF

DECLARE @PageNumber     int
DECLARE @PageSize       int
DECLARE @SortBy         int

SET @PageNumber=3
SET @PageSize=5
SET @SortBy=1


--SELECT * FROM @YourTable

--Method 1
;WITH PaginatedYourTable AS (
SELECT
    RowID,Value1,Value2,Value3
        ,CASE @SortBy
             WHEN  1 THEN ROW_NUMBER() OVER (ORDER BY Value1 ASC)
             WHEN  2 THEN ROW_NUMBER() OVER (ORDER BY Value2 ASC)
             WHEN  3 THEN ROW_NUMBER() OVER (ORDER BY Value3 ASC)
             WHEN -1 THEN ROW_NUMBER() OVER (ORDER BY Value1 DESC)
             WHEN -2 THEN ROW_NUMBER() OVER (ORDER BY Value2 DESC)
             WHEN -3 THEN ROW_NUMBER() OVER (ORDER BY Value3 DESC)
         END AS RowNumber
    FROM @YourTable
    --WHERE
)
SELECT
    RowID,Value1,Value2,Value3,RowNumber
        ,@PageNumber AS PageNumber, @PageSize AS PageSize, @SortBy AS SortBy
    FROM PaginatedYourTable
    WHERE RowNumber>=(@PageNumber-1)*@PageSize AND RowNumber<=(@PageNumber*@PageSize)-1
    ORDER BY RowNumber



--------------------------------------------
--Method 2
;WITH PaginatedYourTable AS (
SELECT
    RowID,Value1,Value2,Value3
        ,ROW_NUMBER() OVER
         (
             ORDER BY
                 CASE @SortBy
                     WHEN  1 THEN Value1
                     WHEN  2 THEN Value2
                     WHEN  3 THEN Value3
                 END ASC
                ,CASE @SortBy
                     WHEN -1 THEN Value1
                     WHEN -2 THEN Value2
                     WHEN -3 THEN Value3
                 END DESC
         ) RowNumber
    FROM @YourTable
    --WHERE  more conditions here
)
SELECT
    RowID,Value1,Value2,Value3,RowNumber
        ,@PageNumber AS PageNumber, @PageSize AS PageSize, @SortBy AS SortBy
    FROM PaginatedYourTable
    WHERE 
        RowNumber>=(@PageNumber-1)*@PageSize AND RowNumber<=(@PageNumber*@PageSize)-1
        --AND more conditions here
    ORDER BY
        CASE @SortBy
            WHEN  1 THEN Value1
            WHEN  2 THEN Value2
            WHEN  3 THEN Value3
        END ASC
       ,CASE @SortBy
            WHEN -1 THEN Value1
            WHEN -2 THEN Value2
            WHEN -3 THEN Value3
        END DESC
RowID  Value1 Value2 Value3 RowNumber  PageNumber  PageSize    SortBy
------ ------ ------ ------ ---------- ----------- ----------- -----------
10     2      1      1      10         3           5           1
11     2      1      2      11         3           5           1
12     2      1      3      12         3           5           1
13     2      2      1      13         3           5           1
14     2      2      2      14         3           5           1

(5 row(s) affected

RowID  Value1 Value2 Value3 RowNumber  PageNumber  PageSize    SortBy
------ ------ ------ ------ ---------- ----------- ----------- -----------
10     2      1      1      10         3           5           1
11     2      1      2      11         3           5           1
12     2      1      3      12         3           5           1
13     2      2      1      13         3           5           1
14     2      2      2      14         3           5           1

(5 row(s) affected)
Select * from 
(
    Select ROW_NUMBER() OVER ( order by Id) as 'Row_Number', * 
    from tbl_Contact_Us
) as tbl
Where tbl.Row_Number = 5
 select salary from (
 select  Salary, ROW_NUMBER() over (order by Salary desc) rn from Employee 
 ) t where t.rn = 2