如何在Oracle和SQL Server之间进行兼容的SQL查询?

时间:2012-04-27 16:31:35

标签: sql-server oracle sql-server-2000 syntax-error

以下查询拒绝在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 个答案:

答案 0 :(得分:4)

SQL Server需要派生表的别名,所以......

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

我不确定如何在Oracle中执行别名。此外,您还需要在派生表中为count(*)提供列名。

答案 1 :(得分:1)

这应该适用于:

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

答案 2 :(得分:1)

如果我理解你要完成的任务,我认为你可以将其简化为

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

应该适用于两个数据库。

答案 3 :(得分:0)

在Sql Server中,这应该有效:

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

不确定它是否可以在Oracle中使用