SELECT
p.Requestor AS Requestor,
p.AdjAmtOrd AS Amount_Ordered,
p.Vendor_Name AS Vendor,
p.Item_Description AS Item,
p.Project AS Project,
s.car_number,
p.PO_Year AS PO_Year,
p.AcctType AS Account_Type,
p.budget_sublines,
s.car_type,
s.requester,
s.fbn
FROM
Redshift_PO_Report p
INNER JOIN Redshift_MCL s ON p.Project = s.car_number
WHERE
s.car_type LIKE 'Datacenter or Room Build - Leased%'
AND p.AcctType = 'CapEx%'
AND s.controls > '0'
AND p.Item_Description LIKE '%BMS%'
OR p.Item_Description LIKE '%EPMS%'
AND p.budget_sublines IN ('BMS', 'EPMS');
问题是它在car_type中返回的行除了'Datacenter ...'以外的东西,而不是AcctType中的CapEx(在这种情况下是OpEx)。其余的似乎工作正常。
为什么这样做?
答案 0 :(得分:2)
更改
AND p.Item_Description LIKE '%BMS%'
OR p.Item_Description LIKE '%EPMS%'
的
AND (p.Item_Description LIKE '%BMS%'
OR p.Item_Description LIKE '%EPMS%')
答案 1 :(得分:2)
我相信您的问题是使用AND和OR。
试试这个:
...
AND (p.Item_Description LIKE '%BMS%' OR p.Item_Description LIKE '%EPMS%')
AND ...
在您给定的代码中,它要么需要"或"之前的所有条件。为真,或在"或"之后的所有条件是真实的。因此,正如您所经历的那样,第一个条件可能是假的,只要在"或"之后的所有内容都是如此。是真的。