SQLite:取决于行存在的条件 Where 子句

SQLite: Conditional Where Clause depending on Row Existence

我有一个相当复杂的 SQLite 查询:

select TDELIVER.ROWID, TDELIVER.DELSERN, COMSERNO, DELDATASRC, DELDATE,(select sum(CASE WHEN (DELEORDUNI == 'CASE' or PRODCOMP == 1) and DELEACTVOL > 0 and PRODPALLET = 0 THEN DELEACTVOL/PRODSIZE WHEN (DELEORDUNI == 'CASE' or PRODCOMP == 1) and DELEACTVOL > 0 THEN DELEACTVOL ELSE 0 END) from TDELENTR inner join TPRODUCT on TDELENTR.PRODSERN=TPRODUCT.PRODSERN where DELSERN = TDELIVER.DELSERN) NumberOfPalletsDelivered,(select sum(CASE WHEN (DELEORDUNI == 'CASE' or PRODCOMP == 1) and DELEACTVOL < 0 THEN DELEACTVOL ELSE 0 END) from TDELENTR inner join TPRODUCT on TDELENTR.PRODSERN=TPRODUCT.PRODSERN where DELSERN = TDELIVER.DELSERN) NumberOfPalletsCompensated,(select sum(CASE WHEN (DELEORDUNI != 'CASE' and PRODCOMP != 1) and DELEACTVOL > 0 THEN ROUND(DELEACTVOL/PRODSIZE,0) ELSE 0 END) from TDELENTR inner join TPRODUCT on TDELENTR.PRODSERN=TPRODUCT.PRODSERN where DELSERN = TDELIVER.DELSERN) NumberOfCasesDelivered,(select sum(CASE WHEN (DELEORDUNI != 'CASE' and PRODCOMP != 1) and DELEACTVOL < 0 THEN DELEACTVOL/PRODSIZE ELSE 0 END) from TDELENTR inner join TPRODUCT on TDELENTR.PRODSERN=TPRODUCT.PRODSERN where DELSERN = TDELIVER.DELSERN) NumberOfCasesCompensated,(select sum(DELEACTVOL * DELEPRICE) from TDELENTR inner join TPRODUCT on TDELENTR.PRODSERN=TPRODUCT.PRODSERN where DELSERN = TDELIVER.DELSERN) TotalPriceOfDelivery,

replace(group_concat(distinct TPGROUPS.PGRPVAL), ',', ', ') as Brands 
from TDELIVER 
inner join TDELENTR on TDELENTR.DELSERN=TDELIVER.DELSERN inner join  
LPROPGR on LPROPGR.PRODSERN=TDELENTR.PRODSERN inner join TPGROUPS on
TPGROUPS.PGRSERN= LPROPGR.PGRSERN 
where COMSERNO='501000000002118' and PGRPNAME COLLATE NOCASE in 
(select SETVALUE from TSETTING where SETKEY = 'ProductGroup')
GROUP BY TDELIVER.ROWID

这 return 是一个品牌列表。但是,有时,SELECT EXISTS(SELECT 1 FROM TSETTING WHERE SETKEY="ProductGroup" LIMIT 1); 不会 return 1,在这种情况下,我想 运行 一个更简单的查询:

select TDELIVER.ROWID, TDELIVER.DELSERN, COMSERNO, DELDATASRC, DELDATE,(select sum(CASE WHEN (DELEORDUNI == 'CASE' or PRODCOMP == 1) and DELEACTVOL > 0 and PRODPALLET = 0 THEN DELEACTVOL/PRODSIZE WHEN (DELEORDUNI == 'CASE' or PRODCOMP == 1) and DELEACTVOL > 0 THEN DELEACTVOL ELSE 0 END) from TDELENTR inner join TPRODUCT on TDELENTR.PRODSERN=TPRODUCT.PRODSERN where DELSERN = TDELIVER.DELSERN) NumberOfPalletsDelivered,(select sum(CASE WHEN (DELEORDUNI == 'CASE' or PRODCOMP == 1) and DELEACTVOL < 0 THEN DELEACTVOL ELSE 0 END) from TDELENTR inner join TPRODUCT on TDELENTR.PRODSERN=TPRODUCT.PRODSERN where DELSERN = TDELIVER.DELSERN) NumberOfPalletsCompensated,(select sum(CASE WHEN (DELEORDUNI != 'CASE' and PRODCOMP != 1) and DELEACTVOL > 0 THEN ROUND(DELEACTVOL/PRODSIZE,0) ELSE 0 END) from TDELENTR inner join TPRODUCT on TDELENTR.PRODSERN=TPRODUCT.PRODSERN where DELSERN = TDELIVER.DELSERN) NumberOfCasesDelivered,(select sum(CASE WHEN (DELEORDUNI != 'CASE' and PRODCOMP != 1) and DELEACTVOL < 0 THEN DELEACTVOL/PRODSIZE ELSE 0 END) from TDELENTR inner join TPRODUCT on TDELENTR.PRODSERN=TPRODUCT.PRODSERN where DELSERN = TDELIVER.DELSERN) NumberOfCasesCompensated,(select sum(DELEACTVOL * DELEPRICE) from TDELENTR inner join TPRODUCT on TDELENTR.PRODSERN=TPRODUCT.PRODSERN where DELSERN = TDELIVER.DELSERN) TotalPriceOfDelivery

from TDELIVER 
where COMSERNO='501000000002118'

(我使用块引号来显示 相同的代码 ,除了第一个块末尾的逗号)

我的问题是,如果 SELECT EXISTS(SELECT 1 FROM TSETTING WHERE SETKEY="ProductGroup" LIMIT 1) 是假的,品牌列表是真的吗?

帮助说明问题的一些屏幕截图:

简单案例:

复杂案例:

要根据条件执行两个不同的查询,请使用 compound query:

SELECT * FROM (SELECT ...)
WHERE x
UNION ALL
SELECT * FROM (SELECT ...)
WHERE NOT x;