просто играл с некоторыми SQL заявления на сервер MySQL 5.1 я уже задавала вопрос, как сделать определенное количество на двух столах (см here) и я нашел ответ, как перенести мой результат (см. here), но я не могу использовать его на моем локальном сервере MYSQL 5.1.Использование @DECLARE в MYSQL 5,1
Это таблица один: тест
id|name|test_type
-------------
1|FirstUnit|1
2|FirstWeb|2
3|SecondUnit|1
Вторая таблица: 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;
I не может запустить последнюю часть, где я хочу перенести мой временный результат. Я получаю сообщение об ошибке «DECLARE»
/* Ошибка SQL (1064): У вас возникла ошибка в синтаксисе SQL; проверить руководство, которое соответствует Вашей версии сервера MySQL для правого синтаксиса использовать вблизи 'DECLARE @cols AS NVARCHAR (MAX), @query AS NVARCHAR (MAX)
выберите @cols =' в строке 2 // 2 строки затронуты, найдено 2 строки. Продолжительность 3 из 4 запросов: 0,000 сек. */
Может ли кто-нибудь помочь?
Вы можете редактировать ваш OP с некоторыми выборочными данными, а затем желаемым результатом? – Taryn
уверен, сделаю это. – LStrike