SQL - 左连接不适用于 switch 语句
Posted
技术标签:
【中文标题】SQL - 左连接不适用于 switch 语句【英文标题】:SQL - Left Join not working with switch statement 【发布时间】:2011-06-27 12:35:27 【问题描述】:我使用的是 MS Access 2007。每当我键入 Left Join 时,我都会收到一条错误消息,指出不支持 Left Join。这是SQL
TRANSFORM Count([Letter Status].Customer_ID) AS CountOfCustomer_ID
SELECT Switch(
[Race_1]=1,"White",
[Race_1]=2,"Black",
[Race_1]=3,"Asian",
[Race_1]=4,"Hispanic/Latino",
[Race_1]=5,"American Indian/ Alaskan Native",
[Race_1]=6,"Native Hawaiian or Pacific Islander",
[Race_1]=7,"Multiracial",
[Race_1]=8,"Other",
[Race_1]=9,"Unknown"
) AS Race
FROM Demographics
INNER JOIN (
[Status]
INNER JOIN
Research
ON [Status].Customer_ID = Research.Customer_ID
)
ON (Demographics.ID = [Letter Status].Customer_ID)
AND (Demographics.ID = Research.Customer_ID)
WHERE ((([Status].Count)=1))
GROUP BY [Status].Count, Demographics.Race_1
ORDER BY Research.Store_site
PIVOT Research.Store_site In (1,2,3,4,5,6,7,8,9,10);
有人可以使用上面的代码告诉我在哪里放置左连接以允许每个 Race 的行显示在表格中吗?另外,你能告诉我如何在这段代码中用 0 替换 Null 值吗?我曾尝试实现 NZ() 但没有成功。
请帮忙。
【问题讨论】:
【参考方案1】:仔细查看您的 FROM 子句。
FROM Demographics
INNER JOIN (
[Status]
INNER JOIN
Research
ON [Status].Customer_ID = Research.Customer_ID
)
ON (Demographics.ID = [Letter Status].Customer_ID)
AND (Demographics.ID = Research.Customer_ID)
您有一个引用 [Letter Status] 的 ON 条件,但 [Letter Status] 不包含在您的源表中……您确实有一个称为 [Status]。
首先在查询设计器中构建 JOIN,这样您就知道您是从 Access 可以接受的 SQL 开始的。
并简化这件事,直到您整理好 JOIN。摆脱 Switch、TRANSFORM、PIVOT 和 GROUP BY,直到 JOIN 工作为止。
【讨论】:
以上是关于SQL - 左连接不适用于 switch 语句的主要内容,如果未能解决你的问题,请参考以下文章