SQL Server和嵌套的SELECT:...')'附近的语法不正确?
问题描述:
执行我的代码时出现此错误。这是什么意思?我正在使用SQL Server Management Server Express。SQL Server和嵌套的SELECT:...')'附近的语法不正确?
消息102,级别15,状态1,行7
附近有语法错误 ')'。
declare @start datetime
declare @end datetime
set @start = '2012/01/02'
set @end = '2012/01/06'
SELECT
SUM(VCount) as [Total],
vdate,
(select COUNT(VIP) From (SELECT DISTINCT(VIP) FROM dbo.Visiter)) as [IP3]
FROM dbo.Visiter
where VDate between @start and @end
GROUP BY VDate
答
在SQL Server中,当你在FROM子句中使用派生表(子查询),你必须给派生表的别名:
SELECT
SUM(VCount) as [Total],
vdate,
-- add an alias in the next line
(select COUNT(VIP) From (SELECT DISTINCT(VIP) FROM dbo.Visiter) AS a) as [IP3]
FROM dbo.Visiter
where VDate between @start and @end
GROUP BY VDate
参考:FROM clause
答
我觉得这
(select COUNT(VIP) From (SELECT DISTINCT(VIP) FROM dbo.Visiter)) as [IP3]
是更好地转化为
(select COUNT(DISTINCT VIP) FROM dbo.Visiter) as [IP3]
据我所知,MySQL的,至少说Every derived table must have its own alias
这样,你的子查询早该样子
(select COUNT(v) From (SELECT DISTINCT(VIP) AS v FROM dbo.Visiter) AS tmp1) as [IP3]
但短 - 好=)
ID做的和得到这个: 消息156,15级,状态1,11号线 语法错误关键字接近 'SELECT'。 Msg 102,Level 15,State 1,Line 11 ')'附近语法不正确。 – user1133937 2012-01-06 08:55:07
是的,抱歉,修正。已经测试=) – shybovycha 2012-01-06 08:56:32
我想获得唯一访客的数量,但这让我总结所有独特的访客。请帮助我(对不起我弱的英语; D) – user1133937 2012-01-06 09:21:37