を取得する私は、列ヘッダは、特定の動物も持っその後、郵便番号を一度に表示するクエリを取得しようとしています 、このテーブルを持っています。私は、この場合のクエリを使用してみましたが、それは私が
select
zipcode,
case animal when 'dog' then count when 'lizard' then count else 'null' end as animal
from test1
order by zipcode;
を取得する私は、列ヘッダは、特定の動物も持っその後、郵便番号を一度に表示するクエリを取得しようとしています 、このテーブルを持っています。私は、この場合のクエリを使用してみましたが、それは私が
select
zipcode,
case animal when 'dog' then count when 'lizard' then count else 'null' end as animal
from test1
order by zipcode;
は多分これ、このような何かを試してみてください(私がテストしていた間、私はそれをすべてを入力しないように、私は短いバージョンをやった)望んでいたものを私に与えていません。
select zipcode,
IF (animal='dog', count, 0) as dog,
IF (animal='lizard', count, 0) as lizard
from test1 GROUP by zipcode ORDER by zipcode
CASE
行くための正しい方法ですが、集約、および多くのCase
別々のステートメントを必要としています。書かれているように、単一のcase文があります。これは、結果セットの1つのフィールドを意味します。代わりに
:
select
zipcode,
Sum(CASE WHEN animal= 'dog' THEN count END) as "Dog",
SUM(CASE WHEN animal = 'Lizard' THEN count END) as "Lizard",
etc..
from test1
GROUP BY zipcode
order by zipcode;
あなたは、各動物についてSum(Case...)
を行う必要がありますので、それらは、各あなたの結果セットに、独自のフィールドを持つことになります。また、GROUP BY
は、郵便番号ごとに各動物にsum()
を得るために必要です。
他人を助けるために、質問タイトルを「mysqlの行を列に変換する」のような、よりわかりやすいものに変更する必要があるかもしれません。 – Michael