[英]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.