2016-10-06 8 views
0

これは私の出力です。SQL over_rumberグループ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 

このmy 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 

私のメインテーブルは最終品質管理です。主キー=>注文商品No_

+0

あなたは 'WHERE RN = 1 '<を使用する場合、この条件は' RN> 0 AND Rnが<= 20'何が起こるのはなぜ - これは、正確な結果 –

+0

を得ることができます私は私のデータベースからデータ20行を取得したいですアンドロイドアプリへだから私は改ページする必要があります。私はこれを行うことができます。私はprod_order_noを出力内でユニークにしたいと思います。 – Kayra

+0

あなたのIDと同じ時間にこのIDのページングを1行だけ行うことはできません...正確にあなたの質問 – Esperento57

答えて

0
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 
+0

あなたは何をしましたか? – Kayra

0

このような意味ですか?ページネーション用の

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 
+0

助けてくれてありがとう。それは働かない、私は私の英語のために申し訳ありません。私はグループを追加することができません。 – Kayra

+0

カラム 'ax.rn'は、集計関数またはGROUP BY句に含まれていないため、選択リストでは無効です。 – Kayra

+0

@Kayra Try GROUP BY 1,2,4,3 3 – Danieboy

0

オフセットとフェッチ。ちょうどオフセットを変更し、あなたのページネーションで値を取得してください。

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 
+0

私はこれを行うことができません。 rnは動的なので。 – Kayra

+0

ダイマンの意味は? – Esty

+0

それは私のためのページ設定です、rnは0、20,40,60になるので、私はそれを行うことはできません。手伝ってくれてありがとう。 – Kayra