![](/img/trans.png)
[英]how can i count number of orders and then group them using case statements in SQL
[英]How can I iterate CASE statements in SQL?
我想在mySQL中编写具有以下形式的查询:
SELECT *,
CASE
WHEN <column name> = 1 THEN 1
ELSE 0
END as "column_1",
CASE
WHEN <column name> = 2 THEN 1
ELSE 0
END as "column_2",
CASE
WHEN <column name> = 3 THEN 1
ELSE 0
END as "column_3"
FROM <table name>;
我想针对大量情况(大约1000个情况)编写此查询,以便创建满足上述条件的1000个新列。 如何在mySQL中迭代此过程,这样就不必像上面所做的那样手动编写每一行(这里只有3种情况)?
这可能不合适,但是如果您可以使用一列输出(作为字符串而不是多列),那么您可以执行以下操作:
select t.id,
group_concat( (case when t.column = v.value then '1' else '0' end) order by v.ordering) as string_flags
from (select 1 as ordering, 1 as value union all
select 2, 2 union all
. . .
) v cross join
t
group by t.id;
这只是一个想法。 性能是一个问题,但同时也解决了连续的最大列数问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.