【问题标题】:SQL - Left Join not working with switch statementSQL - 左连接不适用于 switch 语句
【发布时间】: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() 但没有成功。

请帮忙。

【问题讨论】:

    标签: sql ms-access join left-join


    【解决方案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 工作为止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 1970-01-01
      • 2021-12-09
      相关资源
      最近更新 更多