以下查询拒绝在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兼容?
答案 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中使用