SQL Over_rumber 分组依据
SQL Over_rumber on group by
这是我的输出。
Prod_ Order No_ | Old Item No_ | Quantity | Control Date
2001 KR2000001 20 2016-08-22
2001 KR2000001 20 2016-08-22
2001 KR2000001 20 2016-08-22
2001 KR2000001 20 2016-08-22
3001 KR3000001 25 2016-08-22
3001 KR3000001 25 2016-08-22
这是我的 sql.
SELECT * FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY [Prod_ Order No_] ORDER BY [Prod_ Order No_] DESC) AS rn,
main.[Prod_ Order No_], items.[Old Item No_], main.[Item No_], main.Quantity, main.[Control Date] , main.[Control Rate],
main.[Ok Red], main.[Defect Desc], main.[State And Solve], main.[Location Code], main.[Description],
[Item Shipment Date], main.[Final Parti No_], main.[Produced By Users], main.[Renk]
FROM [Zenon data$Final Quality Control] AS main
JOIN [Zenon data$Item] AS items ON items.No_= main.[Item No_]
JOIN [Zenon data$Production Entry] AS pe ON pe.[Prod_ Order No] = main.[Prod_ Order No_]
) AS ax
WHERE rn > 0 AND rn < =20
我想要这个输出,但我做不到。
Prod_ Order No_ | Old Item No_ | Quantity | Control Date
2001 KR2000001 20 2016-08-22
3001 KR3000001 25 2016-08-22
我的主要 table 是最终质量控制。主键 => 产品订单号_
你的意思是这样的?
SELECT * FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY [Prod_ Order No_] ORDER BY [Prod_ Order No_] DESC) AS rn,
main.[Prod_ Order No_], items.[Old Item No_], main.[Item No_], main.Quantity, main.[Control Date] , main.[Control Rate],
main.[Ok Red], main.[Defect Desc], main.[State And Solve], main.[Location Code], main.[Description],
[Item Shipment Date], main.[Final Parti No_], main.[Produced By Users], main.[Renk]
FROM [Zenon data$Final Quality Control] AS main
JOIN [Zenon data$Item] AS items ON items.No_= main.[Item No_]
JOIN [Zenon data$Production Entry] AS pe ON pe.[Prod_ Order No] = main.[Prod_ Order No_]
) AS ax
WHERE rn > 0 AND rn < =20
GROUP BY 1, 2, 4
select * from (
SELECT ax.*, ROW_NUMBER() OVER (PARTITION BY [Prod_ Order No_] ORDER BY [Prod_ Order No_] DESC) AS rnpage,
FROM
(
SELECT
ROW_NUMBER() OVER (PARTITION BY [Prod_ Order No_] ORDER BY [Prod_ Order No_] DESC) AS rn,
main.[Prod_ Order No_], items.[Old Item No_], main.[Item No_], main.Quantity, main.[Control Date] , main.[Control Rate],
main.[Ok Red], main.[Defect Desc], main.[State And Solve], main.[Location Code], main.[Description],
[Item Shipment Date], main.[Final Parti No_], main.[Produced By Users], main.[Renk]
FROM [Zenon data$Final Quality Control] AS main
JOIN [Zenon data$Item] AS items ON items.No_= main.[Item No_]
JOIN [Zenon data$Production Entry] AS pe ON pe.[Prod_ Order No] = main.[Prod_ Order No_]
) AS ax
WHERE rn=1
) ax2 where rnpage between 1 and 20
对于分页,使用 Offset 和 fetch。只需更改分页的偏移量和获取值即可。
SELECT * FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY [Prod_ Order No_] ORDER BY [Prod_ Order No_] DESC) AS rn,
main.[Prod_ Order No_], items.[Old Item No_], main.[Item No_], main.Quantity, main.[Control Date] , main.[Control Rate],
main.[Ok Red], main.[Defect Desc], main.[State And Solve], main.[Location Code], main.[Description],
[Item Shipment Date], main.[Final Parti No_], main.[Produced By Users], main.[Renk]
FROM [Zenon data$Final Quality Control] AS main
JOIN [Zenon data$Item] AS items ON items.No_= main.[Item No_]
JOIN [Zenon data$Production Entry] AS pe ON pe.[Prod_ Order No] = main.[Prod_ Order No_]
) AS ax
ORDER BY rn
OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
这是我的输出。
Prod_ Order No_ | Old Item No_ | Quantity | Control Date
2001 KR2000001 20 2016-08-22
2001 KR2000001 20 2016-08-22
2001 KR2000001 20 2016-08-22
2001 KR2000001 20 2016-08-22
3001 KR3000001 25 2016-08-22
3001 KR3000001 25 2016-08-22
这是我的 sql.
SELECT * FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY [Prod_ Order No_] ORDER BY [Prod_ Order No_] DESC) AS rn,
main.[Prod_ Order No_], items.[Old Item No_], main.[Item No_], main.Quantity, main.[Control Date] , main.[Control Rate],
main.[Ok Red], main.[Defect Desc], main.[State And Solve], main.[Location Code], main.[Description],
[Item Shipment Date], main.[Final Parti No_], main.[Produced By Users], main.[Renk]
FROM [Zenon data$Final Quality Control] AS main
JOIN [Zenon data$Item] AS items ON items.No_= main.[Item No_]
JOIN [Zenon data$Production Entry] AS pe ON pe.[Prod_ Order No] = main.[Prod_ Order No_]
) AS ax
WHERE rn > 0 AND rn < =20
我想要这个输出,但我做不到。
Prod_ Order No_ | Old Item No_ | Quantity | Control Date
2001 KR2000001 20 2016-08-22
3001 KR3000001 25 2016-08-22
我的主要 table 是最终质量控制。主键 => 产品订单号_
你的意思是这样的?
SELECT * FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY [Prod_ Order No_] ORDER BY [Prod_ Order No_] DESC) AS rn,
main.[Prod_ Order No_], items.[Old Item No_], main.[Item No_], main.Quantity, main.[Control Date] , main.[Control Rate],
main.[Ok Red], main.[Defect Desc], main.[State And Solve], main.[Location Code], main.[Description],
[Item Shipment Date], main.[Final Parti No_], main.[Produced By Users], main.[Renk]
FROM [Zenon data$Final Quality Control] AS main
JOIN [Zenon data$Item] AS items ON items.No_= main.[Item No_]
JOIN [Zenon data$Production Entry] AS pe ON pe.[Prod_ Order No] = main.[Prod_ Order No_]
) AS ax
WHERE rn > 0 AND rn < =20
GROUP BY 1, 2, 4
select * from (
SELECT ax.*, ROW_NUMBER() OVER (PARTITION BY [Prod_ Order No_] ORDER BY [Prod_ Order No_] DESC) AS rnpage,
FROM
(
SELECT
ROW_NUMBER() OVER (PARTITION BY [Prod_ Order No_] ORDER BY [Prod_ Order No_] DESC) AS rn,
main.[Prod_ Order No_], items.[Old Item No_], main.[Item No_], main.Quantity, main.[Control Date] , main.[Control Rate],
main.[Ok Red], main.[Defect Desc], main.[State And Solve], main.[Location Code], main.[Description],
[Item Shipment Date], main.[Final Parti No_], main.[Produced By Users], main.[Renk]
FROM [Zenon data$Final Quality Control] AS main
JOIN [Zenon data$Item] AS items ON items.No_= main.[Item No_]
JOIN [Zenon data$Production Entry] AS pe ON pe.[Prod_ Order No] = main.[Prod_ Order No_]
) AS ax
WHERE rn=1
) ax2 where rnpage between 1 and 20
对于分页,使用 Offset 和 fetch。只需更改分页的偏移量和获取值即可。
SELECT * FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY [Prod_ Order No_] ORDER BY [Prod_ Order No_] DESC) AS rn,
main.[Prod_ Order No_], items.[Old Item No_], main.[Item No_], main.Quantity, main.[Control Date] , main.[Control Rate],
main.[Ok Red], main.[Defect Desc], main.[State And Solve], main.[Location Code], main.[Description],
[Item Shipment Date], main.[Final Parti No_], main.[Produced By Users], main.[Renk]
FROM [Zenon data$Final Quality Control] AS main
JOIN [Zenon data$Item] AS items ON items.No_= main.[Item No_]
JOIN [Zenon data$Production Entry] AS pe ON pe.[Prod_ Order No] = main.[Prod_ Order No_]
) AS ax
ORDER BY rn
OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY