我想使用 SQLite 3 中多个表中的多个值进行计算。这是正确的语法吗?
data_sql2 = """SELECT *
FROM ra_list
JOIN kunden ON (ra_list.ku_nr = kunden.kundennr)
JOIN debit_customer ON (ra_list.ku_nr = debit_customer.ku_nr)
LEFT JOIN zvb_debit_customer ON (ra_list.ku_nr = zvb_debit_customer.ku_nr)
CASE WHEN skonto != 0 or skonto is not NULL
THEN ra_list.betrag_brutto - (ra_list.betrag_brutto / 100 * skonto)
END
AS netto FROM zvb_debit_customer,
WHERE ra_list.re_dat = ?
ORDER BY ra_list.re_nr DESC
"""
CASE 表达式应该是 SELECT 子句的一部分。
选择 ra_列表。, 昆登., 借方客户。, zvb_debit_customer., 案件 当 skonto != 0 时 ra_list.betrag_brutto - (ra_list.betrag_brutto / 100 * skonto) 否则 ra_list.betrag_brutto END AS 网络
CASE表达式后的FROM zvb_debit_customer不正确;相反,zvb_debit_customer 应该是 LEFT JOIN 的一部分。
在 ra_list.ku_nr 上左加入 zvb_debit_customer = zvb_debit_customer.ku_nr
WHERE 子句前面不应有逗号。
skonto is not NULL 条件是多余的,因为 skonto != 0 将已经忽略 NULL 值,因为 SQL 如何通过不等式检查处理 NULL。
所以我的最终答案是这样的:
SELECT
ra_list.*,
kunden.*,
debit_customer.*,
zvb_debit_customer.*,
CASE
WHEN skonto != 0 THEN ra_list.betrag_brutto - (ra_list.betrag_brutto / 100 * skonto)
ELSE ra_list.betrag_brutto
END AS netto
FROM ra_list
JOIN kunden ON ra_list.ku_nr = kunden.kundennr
JOIN debit_customer ON ra_list.ku_nr = debit_customer.ku_nr
LEFT JOIN zvb_debit_customer ON ra_list.ku_nr = zvb_debit_customer.ku_nr
WHERE ra_list.re_dat = ?
ORDER BY ra_list.re_nr DESC;