0

以下查询拒绝在 Sql server 上运行,而它在 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 回答