我尝试连接 5 个表并根据最后一个位置确定它。
这是矩阵。
我做到了,但问题是我应该选择所有连接表上的所有字段以帮助进行比较,之后我添加案例来确定最后一个位置。这就是我得到的结果。
当我放置 count()
并添加单个 where 条件时,结果显示与实际情况相同。
这是结果(采样)
但是当我尝试在所有条件下对它进行计数时,结果变成了 0。 它与我想要的上面的矩阵(输出)不同。
我的问题是:
- 可以简单地编写脚本,无需任何选择列作为帮助器,只需选择(拒绝、Cair、待处理、处理中)?
- 当我输入所有 where 条件时,它会变成 0,除了当我输入单个条件时,结果显示与实际情况相同。
这是我的查询:
SELECT
a.id_cabang DTBO, b.id_cabang REJECT, c.id_cabang CAIR, d.id_cabang PENDING, e.id_cabang INPROSES,
count( CASE WHEN
b.id_cabang
IS NULL THEN 0 ELSE b.id_cabang END ) AS reject
,
count( CASE WHEN
b.id_cabang
IS NULL THEN c.id_cabang ELSE 0 END) AS cair
,
count( CASE WHEN
c.id_cabang
IS NOT NULL THEN 0 ELSE d.id_cabang END) AS pending
,
count( CASE WHEN
b.id_cabang IS NULL
AND
c.id_cabang IS NULL
AND
d.id_cabang IS NULL
THEN e.id_cabang ELSE 0 END) AS inproses
FROM dtbo_tbl AS a
LEFT JOIN
(
SELECT id_cabang FROM reject_tbl
) AS b
ON a.id_cabang = b.id_cabang
LEFT JOIN
(
SELECT id_cabang FROM cair_tbl
) AS c
ON a.id_cabang = c.id_cabang
LEFT JOIN
(
SELECT id_cabang FROM pending_tbl
) AS d
ON a.id_cabang = d.id_cabang
LEFT JOIN
(
SELECT id_cabang FROM inproses_tbl
) AS e
ON a.id_cabang = e.id_cabang
WHERE
( CASE WHEN
b.id_cabang
IS NULL THEN 0 ELSE b.id_cabang END ) > 0
AND
( CASE WHEN
b.id_cabang
IS NULL THEN c.id_cabang ELSE 0 END) > 0
AND
( CASE WHEN
c.id_cabang
IS NOT NULL THEN 0 ELSE d.id_cabang END) > 0
AND
( CASE WHEN
b.id_cabang IS NULL
AND
c.id_cabang IS NULL
AND
d.id_cabang IS NULL
THEN e.id_cabang ELSE 0 END) > 0
谢谢。
最佳答案
嗯,我找到了答案。
SELECT
a.id_cabang DTBO, b.id_cabang REJECT, c.id_cabang CAIR, d.id_cabang PENDING,e.id_cabang INPROSES,
COUNT( CASE WHEN b.id_cabang IS NULL THEN NULL ELSE b.id_cabang END ) AS reject,
COUNT( CASE WHEN b.id_cabang IS NULL THEN c.id_cabang ELSE NULL END) AS cair,
COUNT( CASE WHEN c.id_cabang IS NOT NULL THEN NULL ELSE d.id_cabang END) AS pending,
COUNT( CASE WHEN b.id_cabang IS NULL AND c.id_cabang IS NULL AND d.id_cabang IS NULL THEN e.id_cabang ELSE NULL END) AS inproses
FROM dtbo_tbl AS a
LEFT JOIN
(
SELECT id_cabang FROM reject_tbl
) AS b
ON a.id_cabang = b.id_cabang
LEFT JOIN
(
SELECT id_cabang FROM cair_tbl
) AS c
ON a.id_cabang = c.id_cabang
LEFT JOIN
(
SELECT id_cabang FROM pending_tbl
) AS d
ON a.id_cabang = d.id_cabang
LEFT JOIN
(
SELECT id_cabang FROM inproses_tbl
) AS e
ON a.id_cabang = e.id_cabang
WHERE
( CASE WHEN b.id_cabang IS NULL THEN NULL ELSE b.id_cabang END ) > 0
OR
( CASE WHEN b.id_cabang IS NULL THEN c.id_cabang ELSE NULL END) > 0
OR
( CASE WHEN c.id_cabang IS NOT NULL THEN NULL ELSE d.id_cabang END) > 0
OR
( CASE WHEN b.id_cabang IS NULL AND c.id_cabang IS NULL
AND d.id_cabang IS NULL THEN e.id_cabang ELSE NULL END) > 0
关于mysql - (MySQL) 当使用完整的 where 条件时,结果变为 0,但当我输入单个条件时,值结果出现为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46951141/