Mysql'de nasıl bir pivot tablo yapılacağını biliyorum (bkz. Aşağıdaki kod örneği), pivot tablodaki sütun sayısı çok büyükse ve 2000 veya daha çok tagnames yazmak istemiyorum. ? - Bu listenin oluşturulmasının bir yolu var mı? Çok teşekkürler şimdiden.pivot tablo
drop table pivot;
create table pivot SELECT time,
max(if(tagname = 'a', value, null)) AS 'a',
max(if(tagname = 'b', value, null)) AS 'b',
max(if(tagname = 'c', value, null)) AS 'c'
FROM test where tagname in ('a','b','c')
GROUP BY time;
select * from pivot;
Hep böyle :-) tam
#!/bin/sh
mysql -BN test > /tmp/$$_tagnames.tmp <<SQL
select distinct tagname from test;
SQL
cat > /tmp/$$_create_table.sql <<EOF
drop table if exists pivot;
create table pivot select
EOF
while read tag; do
echo "max(if(tagname = '$tag', value, null)) AS '$tag'," >> /tmp/$$_create_table.sql
done < /tmp/$$_tagnames.tmp
cat >> /tmp/$$_create_table.sql <<EOF
time
FROM test
GROUP BY time;
select * from pivot;
EOF
mysql -Bt test < /tmp/$$_create_table.sql
rm /tmp/$$_create_table.sql
rm /tmp/$$_tagnames.tmp
Veri yapan bir shell script oluşturabilir
göz en Bu makale. http://buysql.com/mysql/14-how-to-automate-pivot-tables.html – GeoGo