当我尝试执行多个联接时,CurrentExchangeRate1出现错误:
class FC(PresentationUnified, TableDocMixin):
FC_pkey = Column(BIGINT, primary_key=True)
siteid = Column(BIGINT)
tenantid = Column(BIGINT)
auditinfo__createdate = Column(TIMESTAMP)
auditinfo__updatedate = Column(TIMESTAMP)
currency_code = Column(String(512))
PrimaryKeyConstraint(FC_pkey, name='FC_pkey')
__tablename__ = 'cart_fact'
def __init__(self, schema=PresentationUnified.metadata.schema):
self.__table__.schema = schema
def __source(self, session, schema, monetate_schema, postgres_schema, is_migration):
Currency = "\'USD\'"
Tenant(schema=postgres_schema)
Cart(schema=schema)
CurrentExchangeRate1 = None
CurrentExchangeRate2 = None
query = session.query(func.md5(func.CONVERT(literal_column('varchar'),Cart._id)
+ func.CONVERT(literal_column('varchar'),Cart.tenantid)).label("FC_pkey")
, Cart.siteid.label("siteid")
, Cart.tenantid.label("tenantid")
, Cart.auditinfo__createdate.label("auditinfo__createdate")
, Cart.auditinfo__updatedate.label("auditinfo__updatedate")
, func.upper(Tenant.reportingcurrencycode).label("currency_code")
)
return query.join(CurrentExchangeRate1, and_(func.UPPER(Cart.currencycode) ==
func.UPPER(CurrentExchangeRate1.from_currency_code),
func.upper(CurrentExchangeRate1.to_currency_code) == Currency,
func.trunc(func.dateadd(literal_column('day'), -1, func.to_date(Cart.auditinfo__createdate,'YYYY-MM-DD HH:MI:SS')))
== func.trunc(CurrentExchangeRate1.effective_date)),isouter=True).\
join(Tenant , Cart.tenantid == Tenant.tenantid).join \
(CurrentExchangeRate2, and_(func.UPPER(Cart.currencycode) == func.UPPER(CurrentExchangeRate2.from_currency_code),
func.upper(CurrentExchangeRate2.to_currency_code) == func.UPPER(Tenant.reportingcurrencycode) ,
func.trunc(func.dateadd(literal_column('day'), -1,func.to_date(Cart.auditinfo__createdate ,'YYYY-MM-DD HH:MI:SS'))) == func.trunc(CurrentExchangeRate2.effective_date)),isouter=True)
我想要的sql如下所示:
select FC_pkey,siteid, tenantid, auditinfo__createdate, auditinfo__updatedate, currency_code
from
cart left join "
exchange_rate b ON trunc(dateadd(day, -1,to_date(a.auditinfo__createdate,\\'YYYY-MM-DD HH:MI:SS\\'))) = trunc(b.effective_date) and upper(a.currencycode)=upper(b.from_currency_code) and upper (b.to_currency_code) = \\'USD\\' inner join
tenant c ON a.tenantid = c.tenantid left join "
exchange_rate d "
on trunc(dateadd(day, -1,to_date(a.auditinfo__createdate,\\'YYYY-MM-DD HH:MI:SS\\'))) = trunc(d.effective_date) and upper (a.currencycode) = upper (d.from_currency_code)
and upper (d.to_currency_code) = upper (c.reportingcurrencycode)
目前没有回答
相关问题 更多 >
编程相关推荐