Access SQL查询:为所有企业生成是否入选指定项目的动态列
你原来的SQL存在两个问题:
- 语法错误,Access 不支持
EXISTS IN这种组合写法 - 未查询
COMPANY_ID字段,输出结果会缺少企业ID列,不符合需求
方案1:左连接写法(查询效率更高,推荐)
SELECT C.COMPANY_ID, IIF(PS.COMPANY_ID IS NOT NULL, "True", "False") AS PROJECT_TENDERED FROM COMPANY AS C LEFT JOIN (SELECT COMPANY_ID FROM PROJECT_SELECTED WHERE PROJECT_ID = [你的PROJECT_ID变量]) AS PS ON C.COMPANY_ID = PS.COMPANY_ID;
如果需要同时输出企业名称,直接在SELECT后补充C.COMPANY_NAME即可。
方案2:IN子查询写法(逻辑更直观,适合小数据量场景)
SELECT COMPANY_ID, IIF(COMPANY_ID IN (SELECT COMPANY_ID FROM PROJECT_SELECTED WHERE PROJECT_ID = [你的PROJECT_ID变量]), "True", "False") AS PROJECT_TENDERED FROM COMPANY;
两种写法都可以覆盖全部企业记录,动态生成的PROJECT_TENDERED列默认值为False,只要企业在指定项目的入选记录中存在就会返回True,完全符合需求。
内容的提问来源于stack exchange,提问作者OutToBrunch
相关产品推荐
相关产品推荐

