Sql 新手-单词where附近的语法错误

Sql 新手-单词where附近的语法错误,sql,Sql,不知道我做错了什么。我得到以下错误: 关键字“Where”附近的语法不正确 我正在为每个客户争取最新的订单。任何帮助都将不胜感激。您的问题是NULL和=NULL,您需要使用is NULL或is NOT NULL。根据您的RDBMS,您的子查询中还需要一个GROUP BY,最大值为: 您的问题是NULL和=NULL,您需要使用is NULL或is NOT NULL。根据您的RDBMS,您的子查询中还需要一个GROUP BY,最大值为: 你的内部连接称为o1,它不会连接任何东西。我不确定您到底想做什

不知道我做错了什么。我得到以下错误: 关键字“Where”附近的语法不正确

我正在为每个客户争取最新的订单。任何帮助都将不胜感激。

您的问题是NULL和=NULL,您需要使用is NULL或is NOT NULL。根据您的RDBMS,您的子查询中还需要一个GROUP BY,最大值为:

您的问题是NULL和=NULL,您需要使用is NULL或is NOT NULL。根据您的RDBMS,您的子查询中还需要一个GROUP BY,最大值为:


你的内部连接称为o1,它不会连接任何东西。我不确定您到底想做什么,但我认为如果您删除o1的内部连接,而将其作为存在于where子句中,它可能会工作得更好。您还必须将您的o2加入更改为加入o2.AccountId=a.Id,我认为这就是您正在尝试的

select o.id
    , o.Name
    , o.StageName
    , o.[Type]
    , o.Account__c
    ,o.SalesPerson__c
    , o2.AccountId__c
    , o2.Sales_Person__c
    , o2.InvoiceDate__c
from customers.dbo.sales as o 
Inner Join customers.dbo.account as a 
    on a.Id = o.AccountId 
INNER JOIN
(
    Select MAX(Id)Id, AccountId 
    from customers.dbo.order__c
    where Sales_Person__c IS NOT NULL
    GROUP BY AccountId -- depending on the RDBMS you need a GROUP BY
) o1 
INNER JOIN Customers.dbo.Order__c  o2 
    on o2.Id = o1.Id
Where (o.SalesPerson__c IS NULL) 
    and (o.[Type] = 'Renewal') 
    and (o.StageName NOT LIKE 'Closed%')

你的内部连接称为o1,它不会连接任何东西。我不确定您到底想做什么,但我认为如果您删除o1的内部连接,而将其作为存在于where子句中,它可能会工作得更好。您还必须将您的o2加入更改为加入o2.AccountId=a.Id,我认为这就是您正在尝试的

select o.id
    , o.Name
    , o.StageName
    , o.[Type]
    , o.Account__c
    ,o.SalesPerson__c
    , o2.AccountId__c
    , o2.Sales_Person__c
    , o2.InvoiceDate__c
from customers.dbo.sales as o 
Inner Join customers.dbo.account as a 
    on a.Id = o.AccountId 
INNER JOIN
(
    Select MAX(Id)Id, AccountId 
    from customers.dbo.order__c
    where Sales_Person__c IS NOT NULL
    GROUP BY AccountId -- depending on the RDBMS you need a GROUP BY
) o1 
INNER JOIN Customers.dbo.Order__c  o2 
    on o2.Id = o1.Id
Where (o.SalesPerson__c IS NULL) 
    and (o.[Type] = 'Renewal') 
    and (o.StageName NOT LIKE 'Closed%')

查询中的所有语法都无效。SQL中没有[括号]。可能您的意思是某个Microsoft产品在您的查询中使用了无效语法。SQL中没有[括号]。也许你指的是微软的产品之一
select o.id
, o.Name
, o.StageName
, o.[Type]
, o.Account__c
, o.SalesPerson__c
, o2.AccountId__c
, o2.Sales_Person__c
, o2.InvoiceDate__c
from customers.dbo.sales as o 
Inner Join customers.dbo.account as a 
    on a.Id = o.AccountId 
INNER JOIN Customers.dbo.Order__c as o2 
    on o2.AccountId = a.Id
Where (o.SalesPerson__c is NULL) 
and (o.[Type] = 'Renewal') 
and (o.StageName NOT LIKE 'Closed%')
and exists(
    Select MAX(Id) as id 
    from customers.dbo.order__c c
    where c.Sales_Person__c is not NULL
    and id = o2.id)