如何为ROW_NUMBER()获取替代值?

时间:2016-06-01 08:08:51

标签: sql sql-server sql-server-ce row-number sql-server-ce-4

我有一个包含以下值的表:

Name    Order    Innings
Suresh    1         1
Ramesh    2         1
Sekar     3         1
Raju      1         2
Vinoth    2         2
Ramu      3         2

我希望结果如下:

1stInn  2ndInn  Order
Suresh  Raju      1
Ramesh  Vinoth    2
Sekar   Ramu      3

我在SQL Server中使用ROW_NUMBER()得到了结果。

我想在SQL Compact中获得相同的结果,但我不能在SQL Compact中使用ROW_NUMBER()

我正在使用SQL Compact版本 - 4.0.8482.1

如何获得结果?

2 个答案:

答案 0 :(得分:8)

为什么需要ROW_NUMBER()?您可以使用CASE EXPRESSION

来使用条件聚合
SELECT MAX(CASE WHEN t.innings = 1 THEN t.name END) as 1stInn,
       MAX(CASE WHEN t.innings = 2 THEN t.name END) as 2sndInn,
       t.Order
FROM YourTable t
GROUP BY t.order

答案 1 :(得分:3)

简单的Pivot将给出类似的结果

DECLARE @Table1  TABLE 
    ( Name  varchar(6),  [Order]  int,  Innings  int)
;

INSERT INTO @Table1
    ( Name ,  [Order] ,  Innings )
VALUES
    ('Suresh', 1, 1),
    ('Ramesh', 2, 1),
    ('Sekar', 3, 1),
    ('Raju', 1, 2),
    ('Vinoth', 2, 2),
    ('Ramu', 3, 2)
;
select [1] AS '1stinn',[2] AS '2ndinn',[order] from(
select Name ,  [Order] ,  Innings from  @Table1)T
PIVOT (MAX(NAME) FOR Innings IN ([1],[2]))PVT