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