2016-04-01 4 views
3

私は1つのテーブルTempImportを持っており、選択されたクエリ結果は表示イメージと同じです。しかし、私は、SQL Serverを使用してtempImportテーブルに存在する順序としてコード順に結果を取得したいSQLサーバーでソートせずにレコードを選択

選択クエリは次のとおりです。

SELECT DISTINCT Code, 
    (dd.dd_receipt_no) 
FROM TempImport tm WITH(NOLOCK) 
    INNER JOIN depositor_mast dm WITH(NOLOCK) 
      ON tm.Code = dm.dm_code 
    INNER JOIN deposit_detl dd WITH(NOLOCK) 
      ON dm.dm_srno = dd.dd_dm_srno 
WHERE dd.dd_dt_code IN ('PDFP', 'PDFD', 'PDFE') 
    AND tm.Remark = 'OK' 
    AND dm.dm_dep_ind = 'PDEP' 
    AND dd.dd_delind = 'L' 
    AND dd.dd_exit_date = 0 
    AND (dd.Certificate_No = '' OR dd.Certificate_No IS NULL) 

Image shows TempImport , Selected Result and Required Result

+0

tempimportのテーブル構造を変更できますか?はいの場合は、レコードの順序を決定するフィールドを追加します(SQLサーバーに注文自体はありません)。単純なIDフィールドでもあります。 – Arvo

+0

いいえ、テーブルのtempImportを変更できません。 –

+0

あなたはほとんどオプションがありません。あなたは、次のスレッドから行の物理的な場所を使用して、最初の解決策を使用することができるかもしれません:http://stackoverflow.com/questions/909155/equivalent-of-oracles-rowid-in-sql-server – Arvo

答えて

1

は、あなたが効果的にカスタムソート順のために求めています。これについてはいくつかの方法がありますが、どれもかなりIMHOです。 1.元のテーブルは変更できないため、並べ替える列と並べ替え順序の列を持つセカンダリテーブル(通常または一時テーブル)を作成できます。それはArvoが提案したものに代わるアプローチですが、tempImportを変更しないという制限があります。ただし、余分なスペースやメンテナンスなどを意味します。

  1. カスタムソート順の値を反復するRBARクエリを記述できます。この場合はコード列tempImportテーブルに保存します。少数の行でうまく動作し、テーブルが非常に大きくなったときにクエリが使用できなくなるまで痛みが増します。基本的に、あなたのクエリは、あなたがそれをより強固にするためにパラメータを使用して、これを微調整することができ

SELECT a,b,c FROM ......<your stuff here>.... ...<more of your stuff>... ORDER BY CASE a WHEN 'G05198' THEN 1 WHEN 'K10739' THEN 2 WHEN 'B11737' THEN 3 ELSE a END

ようになりますが、基本的な前提は変更されません:あなたは、行ごとの苦渋の行を扱っていますあなたのデータセットが成長するにつれて、痛みを期待してください。おそらく、これはスキーマを修正する権限を得るためにあなたに少し時間を割いてもいいので、これを取り除くことができます。

+0

このクエリを使用することはできませんtempImportに1000を超えるレコードがある –

+1

私の投稿に示されているように、クエリを微調整して、ケースの評価をパラメータ化して、サンプル内でハードコーディングするのではなく、tempImportのソート順に従うようにする。後で時間があればその例を書きますが、オンラインで既存の例を見つけることができます。いずれにしても、これらのタイプのRBARクエリは持続可能ではありません。 Perfは最終的には使用不可能になるという点まで下がり、とにかく別の解決策が必要になります。 #1の探索を提案し、元のテーブルなどを完全に修正してください。ありがとう。 – SQLmojoe

+0

ありがとうございました。問題は解決されました。 :) –

関連する問題