0

次のクエリは、SQL サーバーでは機能しませんが、Oracle 10gR2 では正常に実行されます。

SELECT COUNT(*)
FROM (
   SELECT count(*)
   FROM MYTABLE
   WHERE id IS NOT NULL
   GROUP BY id
)

次のメッセージで終了します。

Microsoft OLE DB Provider for SQL Server error '80040e14'

Ligne 7 : syntaxe incorrecte vers ')'. 

両方の DBMS と互換性を持たせるにはどうすればよいですか?

4

4 に答える 4

4

SQL Server では派生テーブルにエイリアスが必要なので...

SELECT COUNT(*) 
FROM ( 
   SELECT count(*) 
   FROM TABLE 
   WHERE id IS NOT NULL 
   GROUP BY id 
)  a

Oracleでエイリアスを行う方法がわかりません。また、派生テーブルで count(*) の列名を指定する必要があります。

于 2012-04-27T16:35:11.133 に答える
1

これは両方で機能するはずです:

SELECT COUNT(DISTINCT id)
FROM yourtable
WHERE id IS NOT NULL
于 2012-04-27T16:35:32.613 に答える
1

あなたが達成しようとしていることを理解していれば、これを単純化できると思います

SELECT COUNT( DISTINCT id )
  FROM someTable
 WHERE id IS NOT NULL

これは両方のデータベースで機能するはずです。

于 2012-04-27T16:35:52.957 に答える
0

Sql Server では、次のように動作するはずです。

SELECT count(id)
FROM TABLE
WHERE id IS NOT NULL
GROUP BY id

ただし、Oracleで機能するかどうかはわかりません

于 2012-04-27T16:35:45.220 に答える