1
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 <> NULL
) as o1 
INNER JOIN Customers.dbo.Order__c as o2 on o2.Id = o1.Id
WHERE (o.SalesPerson__c = NULL) 
AND (o.[Type] = 'Renewal') 
AND (o.StageName NOT LIKE 'Closed%')

私が何を間違えたのかわからない。次のエラーが表示されます: キーワード 'Where' 付近の構文が正しくありません

各アカウントの最新の注文を取得しようとしています。どんな助けでも大歓迎です。

4

2 に答える 2

2

問題は<> NULL とです。または= NULLを使用する必要があります。RDBMS によっては、サブクエリにも必要です。IS NULLIS NOT NULLGROUP BYMAX()

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%')
于 2012-07-25T15:37:49.737 に答える
2

o1 と呼ばれる内部結合は、何にも結合しません。あなたが何をしようとしているのか正確にはわかりませんが、inner joinfor o1 を削除し、代わりにexistswhereにそれを含めると、うまくいくと思います。また、 o2 join を join on に変更する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 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)
于 2012-07-25T15:54:31.383 に答える