Mysql 将列拆分为多个列

Mysql 将列拆分为多个列,mysql,Mysql,上面的查询提取一个数据集,如附图所示。我需要将一个变量列拆分为多个下有值的列。我认为这必须使用子查询来完成。我怎样才能开始呢 预期产出: 带透视的查询 挑选 * 从选择 时间戳, STRFTIME\u UTC\u USECTimeStamp,%Y-%m-%d%H:%m:%S作为[时间戳], 提供的价值, __键应用程序作为ProjectID, REGEXP\u EXTRACT\uuu key\uuuu.path,r'hostname[,]*.*?,作为[hostname], REGEXP\u

上面的查询提取一个数据集,如附图所示。我需要将一个变量列拆分为多个下有值的列。我认为这必须使用子查询来完成。我怎样才能开始呢

预期产出:

带透视的查询

挑选 * 从选择 时间戳, STRFTIME\u UTC\u USECTimeStamp,%Y-%m-%d%H:%m:%S作为[时间戳], 提供的价值, __键应用程序作为ProjectID, REGEXP\u EXTRACT\uuu key\uuuu.path,r'hostname[,]*.*?,作为[hostname], REGEXP\u EXTRACT\u key\u.path,r'machine[,]*.*?,作为[machine], REGEXP\u EXTRACT\uuu key\uuu.path,r'变量[,]*.*?'作为[variable], IFvalue.provided='integer',CASTvalue.integer作为字符串,CASTvalue.boolean作为字符串作为[value] 从…起 [spark-test-project-152415:spark_机器学习。spark_12272016] 订购人 [Counter\u Strokes\u No\u Reset]中[variable]的时间戳作为SourceTable PIVOT[value], [按状态代码], [按运算符1], [按停止时间限制], [计数器\u良好\u零件\u无\u重置], [按错误原因代码], [计数器\u报废\u无\u重置], [生产工具编号], [按\u停止\u时间\u实际值], [Production\u Good\u Parts\u Preset], [压轴速度], [生产零件号], [按总吨位], [生产作业编号]作为数据透视表

我怎样才能开始呢

试试下面,它可能会给你一个想法

SELECT
    STRFTIME_UTC_USEC(TimeStamp,"%Y-%m-%d %H:%M:%S") AS TimeStamp,
    Value.provided,
    __key__.app AS ProjectID,
    REGEXP_EXTRACT(__key__.path, r'"hostname"[, ]*"(.*?)"') AS hostname,
    REGEXP_EXTRACT(__key__.path, r'"machine"[, ]*"(.*?)"') AS machine,
    REGEXP_EXTRACT(__key__.path, r'"variable"[, ]*"(.*?)"') AS variable,
    IF(value.provided = 'integer', CAST(value.integer AS STRING),              
    CAST(value.boolean AS STRING)) AS value
FROM 
    [spark-test-project-152415:spark_machine_learning.spark_12272016]
ORDER BY 
    TimeStamp
LIMIT 100000

据我所知,图像显示了您当前的输出。你能提供预期输出的例子吗@米哈伊尔,我想得到像上面链接中所附的一样的东西,这里有很多关于这个主题的帖子。你有做过任何搜索吗?@Mikhail,是的,我做过,但我无法获得PIVOT命令的替代选项,这是我现在的查询谢谢@Mikhail能够获得所需的输出
SELECT
  [TimeStamp],
  Value_Provided,
  ProjectID,
  hostname,
  machine,
  SUM(CASE WHEN variable = 'Counter_Strokes_No_Reset' THEN value.integer END) AS Counter_Strokes_No_Reset,
  SUM(CASE WHEN variable = 'Press_State_Code' THEN value.integer END) AS Press_State_Code,
  SUM(CASE WHEN variable = 'Press_Operator_1' THEN value.integer END) AS Press_Operator_1,
  SUM(CASE WHEN variable = 'Press_Stop_Time_Limit' THEN value.integer END) AS Press_Stop_Time_Limit,
  SUM(CASE WHEN variable = 'Counter_Good_Parts_No_Reset' THEN value.integer END) AS Counter_Good_Parts_No_Reset,
  SUM(CASE WHEN variable = 'Press_Error_Reason_Code' THEN value.integer END) AS Press_Error_Reason_Code,
  SUM(CASE WHEN variable = 'Counter_Scrap_No_Reset' THEN value.integer END) AS Counter_Scrap_No_Reset,
  SUM(CASE WHEN variable = 'Production_Tool_Number' THEN value.integer END) AS Production_Tool_Number,
  SUM(CASE WHEN variable = 'Press_Stop_Time_Actual' THEN value.integer END) AS Press_Stop_Time_Actual,
  SUM(CASE WHEN variable = 'Production_Good_Parts_Preset' THEN value.integer END) AS Production_Good_Parts_Preset,
  SUM(CASE WHEN variable = 'Press_Shaft_Speed' THEN value.integer END) AS Press_Shaft_Speed,
  SUM(CASE WHEN variable = 'Production_Part_Number' THEN value.integer END) AS Production_Part_Number,
  SUM(CASE WHEN variable = 'Press_Total_Tonnage' THEN value.integer END) AS Press_Total_Tonnage,
  SUM(CASE WHEN variable = 'Production_Job_Number' THEN value.integer END) AS Production_Job_Number
FROM (
  SELECT
    STRFTIME_UTC_USEC(TIMESTAMP,"%Y-%m-%d %H:%M:%S") AS [TimeStamp],
    Value.provided AS Value_Provided,
    __key__.app AS ProjectID,
    REGEXP_EXTRACT(__key__.path, r'"hostname"[, ]*"(.*?)"') AS [hostname],
    REGEXP_EXTRACT(__key__.path, r'"machine"[, ]*"(.*?)"') AS [machine],
    REGEXP_EXTRACT(__key__.path, r'"variable"[, ]*"(.*?)"') AS [variable],
    IF(value.provided = 'integer', CAST(value.integer AS INTEGER), CAST(value.boolean AS INTEGER)) AS [value]
  FROM [spark-test-project-152415:spark_machine_learning.spark_12272016]
) 
GROUP BY [TimeStamp], Value_Provided, ProjectID, hostname, machine
ORDER BY [TimeStamp]