MYSQL Server 5.1でいくつかのSQLステートメントをいじっているだけです。2つのテーブルで特定のカウントを行う方法をすでに質問しました(こちらを参照)。また、結果を転置する方法(こちらを参照)の回答も見つけましたが、使用できません私のローカルMYSQL Server 5.1.
これはテーブル 1 です: テスト
id|name|test_type
-------------
1|FirstUnit|1
2|FirstWeb|2
3|SecondUnit|1
2 番目のテーブル: test_type
id|type
--------
1|UnitTest
2|WebTest
次の結果は「yourtable」(一時テーブル) に書き込まれます。
type|amount
-----------
UnitTest|2
WebTest|1
最後に私がしたいことは次のとおりです。
UnitTest|WebTest
-----------------
2|1
(問題は、最後の部分がMS-SQLの例からのものであるため、MYSQLでは機能しないと思います)
これは私のSQL文です:
--create a temporary table
create temporary table IF NOT EXISTS yourtable
(
test_type varchar(255),
amount varchar(255)
);
--make a selecten into the temporary table
INSERT INTO yourtable
SELECT
t.test_type ,
COUNT(*) AS amount
FROM test_types AS t
JOIN test AS te ON t.id= te.test_type
GROUP BY test_type
ORDER BY t.test_type;
--just for debugging
select * from yourtable;
-- transpose result
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Type)
from yourtable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT ' + @cols + ' from
(
select Type, Amount,
row_number() over(partition by Type order by Type, Amount) rn
from yourtable
) x
pivot
(
max(Amount)
for Type in (' + @cols + ')
) p '
execute(@query)
--drop temporary table
drop table yourtable;
一時的な結果を転置したい最後の部分を実行できません。「DECLARE」のエラーが表示されます
/* SQL エラー (1064): SQL 構文にエラーがあります。'DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
select @cols = ' at line 2 // 2行が影響を受け、2 行が見つかりました。4 つのクエリのうち 3 つの期間: 0,000 秒。*/
誰でも助けることができますか?