2016-03-29 16 views
0

このSQLはmysqlで動作しますが、SQL Serverではこれを実行できません。注文によるSQLエラー

SELECT COUNT(*) 
FROM (
    SELECT 
     COUNT(postnID) AS Total, 
     postnID, 
     Unit_DBM, 
     job_type, 
     level, 
     internal_plantilla, 
     INCID, 
     ITEM_NO_2005, 
     position_type, 
     position_status 
    FROM paf_plantilla 
    GROUP BY 
     internal_plantilla, 
     level, 
     INCID, 
     postnID, 
     position_status 
    ORDER BY 
     internal_plantilla, 
     postnID 
) AS num 

エラー:

The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.

+0

エラーが発生しましたか?もしそうなら、上記のエラーを投稿してください。 –

+0

あなたのクエリは次のように単純化することができます \t postnID、 \t Unit_DBM、 \t雇用形態、 \tレベル、 \t internal_plantilla、 \t incidに、 \t ITEM_NO_2005、BY paf_plantilla グループから 'SELECT COUNT(*) \t position_type、 \t position_status ' –

+0

ここに投稿する前にorder by句を削除することを検討しましたか?多くのキーストークス。 – Paparazzi

答えて

0

あなたはgroup by句にない列を選択することはできません。 countを行っているので、実際にはorder by節は必要ありません。以下試してみてください:

SELECT COUNT(*) 
FROM (
    SELECT 
     COUNT(postnID) AS Total, 
     postnID, 
     Unit_DBM, 
     job_type, 
     level, 
     internal_plantilla, 
     INCID, 
     ITEM_NO_2005, 
     position_type, 
     position_status 
    FROM paf_plantilla 
    GROUP BY 
     postnID, 
     Unit_DBM, 
     job_type, 
     level, 
     internal_plantilla, 
     INCID, 
     ITEM_NO_2005, 
     position_type, 
     position_status 
) AS num 
+0

しかし、internal_plantilla、level、INCID、postnID、position_statusでしかグループ化していません。このSQLは、テーブル内のすべてのレコードを表示します。 – ylleigh12

+0

次に、 'select'リストから冗長な列を削除する必要があります。 – AKS

2

これは、SQLの任意の非MySQLの実装では動作しません。集計クエリで

  • 非凝集体は、サブクエリでTOPなしgrouped by
  • ORDER BYでなければならない可能性が高い
あなたはそれが(エラーを与えないかもしれないが、それは右のどちらかではありません)になると思う何をするつもりはありません

最初の点のため、正しいクエリ、つまり他のものの組み合わせの何らかの数を調べるのは非常に難しいです。あなたが私が答えを更新することができるかもしれないことを説明すれば。