我想知道这样做是否合法?
select coalesce(myField, (select myfield2 from table1))
from table2
我一直试图让这句话工作几个小时:
select
coalesce( a.TransactionCurrencyId,
(
select c.TransactionCurrencyId
from CRM_accountbase c
join crm_pricelevelbase a
on c.defaultpricelevelid=a.pricelevelid
where a.pricelevelid=(
select a.DefaultPriceLevelId
from
(
select a.DefaultPriceLevelId,c.iCompanyId
from crm_accountbase a
join onyx..company C
on c.iCompanyId=a.accountnumber
) a
where a.iCompanyId=c.iCompanyId
)
) TransactionCurrencyId
from mytable a
问题不在于逻辑。这是语法。
可以在合并内部使用select语句,在where条件中使用另一个select语句吗?
答案 0 :(得分:2)
是的,可以选择coalesce内部和where语句内部(如果你正在比较相等性,它们只返回一行)。
请参阅代码底部附近的内联评论。
此外,它不是一个语法问题,但最好不要将三个不同的表别名为' a'。
select
coalesce( a.TransactionCurrencyId,
(
select c.TransactionCurrencyId
from CRM_accountbase c
join crm_pricelevelbase a
on c.defaultpricelevelid=a.pricelevelid
where a.pricelevelid=(
select a.DefaultPriceLevelId
from
(
select a.DefaultPriceLevelId,c.iCompanyId
from crm_accountbase a
join onyx..company C
on c.iCompanyId=a.accountnumber
) a
where a.iCompanyId=c.iCompanyId
)
) --TransactionCurrencyId <--Need to not alias the subquery here
) --< Need to add this parenthesis
from mytable a