我有一个查询无法在Access中工作。我在Access中运行查询并获得将SQL Server 2005查询转换为Access 2003查询
语法错误。在查询表达式中。
这里有些奇怪的事情发生在这里,除非错误信息应该在句子中间有一段时间,并且没有开盘报价的结束报价。
这是工作
select
CUS_CustomerID, CUS_CorpName, D.LastRevBy AS DeniedBy,
D.LastRevDate AS DeniedDate, S.LastRevBy AS ScreenBy,
S.LastRevDate AS ScreenDate, S.Comment AS Comments
from
(tblscreening S
inner join
Customer on CUS_CustomerID = S.PartyID)
inner join
tblscreening D on D.partyid = S.partyid
and D.screennumber = (select min(screennumber)
from tblscreening
where partyid = S.partyid
and partytype = 'customer'
and deniedparty = 1
group by partyid, partytype)
where
S.partytype = 'customer' and S.DeniedParty = 1
and S.screennumber = (select max(screennumber)
from tblscreening
where partyid = S.partyID and partytype = 'customer'
group by partyid, partytype)
order by
S.partyid
这里是一个客户的一些样本数据的查询。该报告实际上会生成来自多个客户的数据。
PartyID PartyType ScreenNumber DeniedParty LastRevBy LastRevDate Comment
794020 Customer 0 0 827 2007-07-12 13:47:45.000 R# 298479
794020 Customer 1 0 644 2007-08-10 10:48:48.000 RFQ/UPDATED CUSTOMER CARD
794020 Customer 2 0 827 2008-04-01 09:24:09.000 R# 311494
794020 Customer 3 0 827 2008-10-21 12:11:59.000 R# 317773
794020 Customer 4 0 827 2009-06-02 10:59:25.000 R# 324163
794020 Customer 5 0 644 2010-06-22 16:05:02.000 R-335656
794020 Customer 6 0 947 2013-02-04 10:45:53.357 New Inquiry (M8815/6-8)
794020 Customer 7 1 943 2016-04-26 10:07:41.143 Added to denied party
794020 Customer 8 1 944 2016-04-26 10:08:14.107 Verified denied party
单个客户的结果将是(我加了引号partyid以提高可读性)
794020 ROCOM CORP. '943' 2016-04-26 10:07:41.143 '944' 2016-04-26 10:08:14.107 Verified denied party
该查询工作完全在SQL Server中。我尝试使用设计器来创建自我连接。然后我复制了语法,并提出了这个
SELECT
S.PartyID, S.LastRevBy, S.LastRevDate, D.LastRevBy, D.LastRevDate
FROM
tblExDPScreen S, tblExDPScreen AS D
WHERE
D.screennumber = (SELECT MIN(screennumber)
FROM tblExDpscreen
WHERE D.partyid = partyid
AND partytype = 'customer' AND deniedparty = 1
GROUP BY partyid, partytype)
AND S.screennumber = (SELECT MAX(screennumber)
FROM tblscreening
WHERE S.partyid = partyID
AND partytype = 'customer'
GROUP BY partyid, partytype)
AND S.partytype = 'customer'
AND S.DeniedParty = 1
但即使这运行,它根本不工作。我现在唯一的选择是规范化表格。但是这会导致报告长时间处于非操作状态,而不是我想要的。我想让报告起作用,然后决定是否值得将工作分解。
有什么建议吗?
我不相信你的初始查询工作是完整的。你有“From(tblscreening S inner join [...]”,我不能找到结尾括号。你试过“[...] FROM(tblexdpscreen S,[...]”放下D表。并不像sql那样强大..推断同一张表两次可能不是它的一杯茶 – WickedFan
@ChristopherD Customer是另一张表 – Joe
@WickedFan我剪切并粘贴了我在管理工作室发布的查询,它工作得很好。我没有使用括号,如果你指的是paraenthesis,那么你可以很容易地通过计数来确定它们是否匹配。 – Joe