MySQL Pivot без нулей или пробеловMySql

Форум по Mysql
Ответить
Anonymous
 MySQL Pivot без нулей или пробелов

Сообщение Anonymous »

У меня есть рабочая процедура, которая показывает имена активов в названных столбцах Zonename -< /p>

Код: Выделить всё

DECLARE pivot_columns TEXT;
DECLARE sql_query TEXT;

-- Step 1: Generate the pivot columns dynamically (for each zone)
SELECT GROUP_CONCAT(
DISTINCT CONCAT(
#'MAX(CASE WHEN zonename = "', zonename,
#'" THEN asset_name END) AS `', zonename, '`'
'MAX(CASE WHEN zonename = "', zonename,
'" THEN asset_name ELSE '''' END) AS `', zonename,'`'
)
) INTO pivot_columns
FROM (SELECT DISTINCT zonename FROM node) AS distinct_zones;

-- Step 2: If no pivot columns are found, return an error
IF pivot_columns IS NULL OR pivot_columns = '' THEN
SELECT 'No zonenames found.' AS Error_Message;
ELSE
-- Step 3: Construct the final dynamic SQL query
SET sql_query = CONCAT(
'SELECT ',
pivot_columns,
' FROM (',
'    SELECT asset.name AS asset_name, node.zonename ',
'    FROM logs ',
'    INNER JOIN asset ON asset.id = logs.assetid ',
'    INNER JOIN node ON node.id = logs.nodeid ',
'    WHERE asset.serial != "Unassigned" ',
'    AND rssi >= threshold ',
'    AND logs.ts = (SELECT MAX(ts) FROM logs WHERE assetid = asset.id) ',
'    AND node.zonename IS NOT NULL ',  -- Filtering out rows where zonename is NULL
') AS temp_rowed ',
'GROUP BY asset_name ',
'HAVING ',
'  COUNT(CASE WHEN zonename IS NOT NULL THEN 1 END) > 0 ',  -- Ensuring we only include rows where at least one zonename is NOT NULL
'ORDER BY asset_name;'
);

-- Step 4: Execute the dynamic SQL query
SET @stmt = sql_query;  -- Assign the query to a session variable
PREPARE stmt FROM @stmt;  -- Prepare the dynamic SQL from the session variable
EXECUTE stmt;            -- Execute the prepared statement
DEALLOCATE PREPARE stmt; -- Deallocate the prepared statement
END IF;
Но это создает таблицу, показывающая пространства в некоторых столбцах,

это возможно для модификации процедуры или, возможно, обработки. так что процедура выполняет, как много раз существует разные имена зонена, чтобы у меня в итоге был «соединенный» представление о таблице, в котором нет мест или нулей? В примере выше, John, Lab и т. Д. Должны двигаться вверх, поэтому в верхней части столбца стойки нет места. Любые мысли ценятся.

Подробнее здесь: https://stackoverflow.com/questions/795 ... -or-spaces
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»