我已经尝试了一段时间来提出一个代码来同时计算来自多个列的条纹,对于一个表我需要找到大于0的条纹。首先,我设法使用显示分组的公式,该列表示在相应行中与有问题的数据不同的数据的数量。如下图所示:
select descrip,
`1.01`,
(select count(*)
from `all_data` dp
where dp.`1.01` <> dpo.`1.01`
and dp.descrip <= dpo.descrip) as rungroup,
`1.02`,
(select count(*)
from `all_data` dp
where dp.`1.02` <> dpo.`1.02`
and dp.descrip <= dpo.descrip) as rungroup_2
from `all_data` dpo;
1.01和1.02是列的名称,而descrip用于定义数据。这个模型到目前为止工作,但我不知道如何在另一个查询中使用它来显示来自两列的条纹。会有办法吗?
答案 0 :(得分:0)
您应该确保使用2列进行UNION
查询。
像这样的东西
SELECT descrip, thecol,
(select count(*)
from `all_data` dp
where (dp.`1.01` <> dpo.thecol AND dp.`1.02` <> dpo.thecol)
and dp.descrip <= dpo.descrip) as rungroup
FROM
(
SELECT *
FROM
(
SELECT '1.01' AS origcol, descrip, `1.01` AS thecol from `all_data`
UNION ALL
SELECT '1.02' AS origcol, descrip, `1.02` AS thecol from `all_data`
)
ORDER BY descrip, thecol
) dpo;
但是我完全不确定这一部分:
where (dp.`1.01` <> dpo.thecol AND dp.`1.02` <> dpo.thecol)
可能是OR
而不是AND
。没有看到数据就不容易。
只需使用我的查询,分解只获得UNION子查询,修复......然后你就可以得到它。