我有一个包含以下值的表:
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
如何获得结果?
答案 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