1

top のようなキーワードを使用している場合、order by はサブセレクトでのみ許可されるため、sql-server では機能しない次の sql があります。

SELECT DISTINCT *
  FROM ( SELECT pnr, naname, vorname, gebdat, '' p_alter, geschl, gebort
       FROM pgrdat
      WHERE man = 'XYZ'
      ORDER BY pst_ab DESC )

私が望む結果を得る方法はありますか?SQLはOracleでも機能するはずです。

「pst_ab」なしですべてのフィールドを区別したいのですが、同時に「pst_ab」で並べたいです。

回避策は、subselect から order by を使用し、ソース コードですべての pnr 番号を 1 回だけ取得するようにすることです。

どうもありがとう。

4

3 に答える 3

0

個別と順序を切り替えてみてください。

SELECT *
FROM (
    SELECT DISTINCT
        pnr
        ,naname
        ,vorname
        ,gebdat
        ,'' p_alter
        ,geschl
        ,gebort
        ,pst_ab
    FROM pgrdat
    WHERE man = 'XYZ'
    )
ORDER BY pst_ab DESC

そうすれば、個別のリストを取得でき、正しく順序付けられます。もちろん、内部選択にフィールド pst_ab を含める必要があります。これを結果に含めたくない場合は、これを試してください。

SELECT DISTINCT
pnr
,naname
,vorname
,gebdat
,p_alter
,geschl
,gebort
FROM (
    SELECT DISTINCT
        pnr
        ,naname
        ,vorname
        ,gebdat
        ,'' p_alter
        ,geschl
        ,gebort
        ,pst_ab
    FROM pgrdat
    WHERE man = 'XYZ'
    )
ORDER BY pst_ab DESC
于 2016-06-08T09:23:01.997 に答える