我正在用bq编写一个与我的源系统相同的逻辑。在源sql服务器端,它运行良好。但在大查询中,在最后一个左外连接条件中使用or条件失败。如果我移动where子句中的or条件,它将给出错误的计数。需要帮助解决此问题。如何重新编写下面的查询?
选择计数(*)
FROM stprof PRO
INNER JOIN stdim DIM
ON (DIM.diSet = PRO.diSet)
INNER JOIN DQConfig CFG
ON (CFG.ConSet = PRO.ConSet)
LEFT OUTER JOIN AgSt CCT
ON (CCT.StSet = PRO.StSet)
INNER JOIN stprof SummPRO
ON (SummPRO.diSet = DIM.SummdiSet AND
SummPRO.dIntervalStart = PRO.dIntervalStart AND
SummPRO.SiteId = PRO.SiteId AND
SummPRO.nDuration = PRO.nDuration)
LEFT OUTER JOIN AgSt SummCCT
ON (SummCCT.StSet = SummPRO.StSet)
LEFT OUTER JOIN AgentStatus SummSTS
ON (
SummSTS.StSet = SummPRO.StSet
OR
SummSTS.StSet = PRO.StSet)
WHERE DIM.cType = 'A'
1条答案
按热度按时间wljmcqd81#
您可以用交叉连接替换左连接,并将条件从on子句移动到where子句,如下例所示