0
我试过寻找这个答案,但找不到一个。更改微软访问的cte
我有一个CTE我使用与数据库中的2代数据表的SQL查询。一个表的主键是另一个表中的外键,可以在第二个表中出现多次。我想对每个外键出现在第二个表中的次数进行计数,并将其列为我的搜索结果中的总字段以及第一个表中的详细信息。由于CTE不能在Access中工作,我已经调整了这个以在连接中使用子选择,但它仍然不喜欢它在访问中。
下面是表
CREATE TABLE [dbo].[Clients](
[ClientRef] [int] NOT NULL,
[Surname] [varchar](40) NULL,
[Forenames] [varchar](50) NULL,
[Title] [varchar](40) NULL,
CONSTRAINT [CLIE_ClientRef_PK] PRIMARY KEY CLUSTERED
(
[ClientRef] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Policies](
[PolicyRef] [int] NOT NULL,
[ClientRef] [int] NULL,
CONSTRAINT [POLI_PolicyRef_PK] PRIMARY KEY CLUSTERED
(
[PolicyRef] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
的基本组成部分这是我的CTE
WITH CliPol (ClientRef, Plans) AS (SELECT ClientRef, COUNT(ClientRef) AS Plans FROM Policies GROUP BY ClientRef)
SELECT Clients.Surname, Clients.Forenames, Clients.Title, CliPol.Plans AS [No. of plans]
FROM Clients LEFT JOIN CliPol ON Clients.ClientRef = CliPol.ClientRef
ORDER BY Surname, Forenames;
这是我的调整查询。
SELECT Clients.ClientRef, Clients.Surname, Clients.Forenames, Clients.Title , Plans.NoPlans
FROM Clients
LEFT JOIN
(SELECT ClientRef, COUNT(ClientRef) AS NoPlans FROM Policies GROUP BY ClientRef)
AS Plans ON Plans.ClientRef = Clients.ClientRef
ORDER BY Clients.Surname, Clients.Forenames
不幸的是访问抛出错误#3131,“语法错误在FROM子句”,当我试图运行查询。
有谁知道我是怎么做的访问这项工作?
你得到什么错误?尝试更改连接子句中的列顺序(“Clients.ClientRef = Plans.ClientRef”) – 2015-02-06 13:58:01
当你说Access不喜欢你的子查询方法时,是否意味着它通过抛出错误信息来投诉? – HansUp 2015-02-06 13:58:06
嗨,对不起,是的,它告诉我在FROM子句中有一个语法错误(错误3131)。 – welshsteve147 2015-02-06 14:14:50