首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在查询中添加WHERE子句以避免“WHERE子句中的未知列”错误?

如何在查询中添加WHERE子句以避免“WHERE子句中的未知列”错误?
EN

Stack Overflow用户
提问于 2022-09-06 00:31:22
回答 1查看 64关注 0票数 0
代码语言:javascript
复制
    select
    qs.Id, 
    qs.Opportunity__c,
    qs.Name as `Product Name`,
    so.Name as `Opportunity Name`,
    so.CloseDate AS 'Opp Close Date',
    so.Project_Assigned__c AS 'Project Assign Date',
    soi.Product_Family__c,
    
    # Vendor Details    
    spv.Vendor_Name__c AS 'Vendor',
    spv.Selected_for_Use__c AS 'Selected for Use', 
    spv.CurrencyIsoCode AS 'Currency',
    spv.Total_Vendor_Quoted_Cost__c AS 'Quoted Cost',
    spv.Approved_Cost__c AS 'Approved Cost',
    spv.CurrencyIsoCode,

CASE WHEN spv.Approved_Cost__c IS NOT NULL
    THEN spv.Approved_Cost__c
    ELSE spv.Total_Vendor_Quoted_Cost__c
    END AS Cost,
    
CASE WHEN so.Project_Assigned__c IS NOT NULL
    THEN so.Project_Assigned__c 
    ELSE so.CloseDate
    END AS Merged_Date,

from SFDC.QService__c qs

left join SFDC.Opportunity so ON so.Id = qs.Opportunity__c
left join SFDC.OpportunityLineItem soi ON soi.OpportunityId = qs.Opportunity__c
left join SFDC.Panels_Project_Vendor__c spv ON spv.Opportunity__c = so.Id

WHERE year(Merged_Date) = 2022

GROUP BY qs.Opportunity__c, spv.Vendor_Name__c, spv.CurrencyIsoCode
ORDER BY Merged_Date DESC;

我使用CASE WHEN语句创建了一个名为Merged_Date的变量,但我知道SQL是“向后”计算的,因此它抛出了一个未知列的错误。我假设我需要在这种情况下进行过滤,尽管我不知道如何正确地进行过滤。有人能帮忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-06 00:42:31

当计算WHERE子句时,SQL不知道Merged_Date是什么。所以你必须在WHERE子句中详细说明。

替换

代码语言:javascript
复制
WHERE year(Merged_Date) = 2022

使用

代码语言:javascript
复制
WHERE year(CASE WHEN so.Project_Assigned__c IS NOT NULL
   THEN so.Project_Assigned__c 
   ELSE so.CloseDate
   END) = 2022

或者,一种更简洁的方法

代码语言:javascript
复制
WHERE year(COALESCE(so.Project_Assigned__c, so.CloseDate)) = 2022
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73615664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档