データ形式に問題があります。オンラインで待機しています。専門家がお手伝いします。ありがとうございます
表 1:
id groupname 属性 op value
1 abc ダウンロード := 151-250
2 abc アップロード := 50- 150
3 efg Download := 152-250
4 efg Upload := 50-150
上記の表のデータを次の形式に変換する方法
id groupname Download Upload
1 abc 151-250 50-150
2 efg 152-250 50-150
SQL:
SELECT a.groupname,a.value AS Upload,b.value AS Download FROM radgroupreply a LEFT JOIN radgroupreply b ON a .groupname=b.groupname WHERE a.attribute='upload' AND b.attribute='download' AND a.groupname IN ('abc','efg')
このメソッドは実装できますが、ちょっと面倒な気がします非効率的です、もっと良い方法はありますか?
一時テーブルを使用する場合、一時テーブルにデータを挿入する方法は、上記の SQL を直接作成して実行するのでは意味がありませんか?挿入方法はどうするの?
このテーブルのデータは比較的大きいため、効率の問題を考慮して、より良い解決策を見つけたいと思っています。助けてください。いくつかのアイデアを提供していただき、ありがとうございます。
オンラインで待っています、緊急です! ! ! ! !
-----解決策---------
保存プロシージャを使用して一時テーブルを作成する
------解決策------------------
クロス集計を探していると、参照用の既製のストアド プロシージャがあります。 「クロス集計」を検索して
を見つけます
------解決策------------------
列変換...
@id="" を設定します。 select (@id:=@id+1) AS ID、グループ名、 group_concat(if(attribute='ダウンロード', `value`, '') separator '') AS ダウンロード、 group_concat(if(attribute='upload', `value`, '') separator '') AS アップロード テーブル名グループからグループ名 <div class="clear"></div>