Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询(转置?)_Sql - Fatal编程技术网

SQL查询(转置?)

SQL查询(转置?),sql,Sql,我进行此查询是为了从数据库中选择值 SELECT SAMPLE_TIME, ENTITY, STAT_GROUP, STAT_ID, STAT_NAME, CONVERT(decimal(16,2), STAT_VALUE/100.0) AS PERCENTAGE FROM VPXV_HIST_STAT_YEARLY WHERE ENTITY LIKE 'vm-1783' AND SAMPLE_TIME > '2017-10-01' AND SAMPLE_TIME < '2017-1

我进行此查询是为了从数据库中选择值

SELECT
SAMPLE_TIME, ENTITY, STAT_GROUP, STAT_ID, STAT_NAME, CONVERT(decimal(16,2), STAT_VALUE/100.0) AS PERCENTAGE
FROM
VPXV_HIST_STAT_YEARLY WHERE ENTITY LIKE 'vm-1783'
AND SAMPLE_TIME > '2017-10-01'
AND SAMPLE_TIME < '2017-12-31'
AND ((STAT_GROUP = 'CPU' OR STAT_GROUP = 'MEM'))
AND STAT_NAME = 'USAGE'
ORDER by SAMPLE_TIME,STAT_GROUP ASC
这是输出:

|数据|实体|统计|组|统计| ID |统计|名称|百分比| |------|-----|------|-----|------|------| |2017-10-02 | vm-1783 | cpu | 2 |使用| 12.04| |2017-10-02 | vm-1783 | mem | 24 |用法| 7.21| |2017-10-03 | vm-1783 | cpu | 2 |使用| 4.89| |2017-10-03 | vm-1783 | mem | 24 |用法| 2.69|

但我希望得到这种输出: |数据| CPU |内存| |------ |---- |--- | | 2017-10-02 | 12.04 | 7.21 | |2017-10-03 | 4.89 | 2.69|

我试过吹牛,但也许我弄错了。
有什么帮助吗?

您可以使用条件聚合:

SELECT SAMPLE_TIME,
       MAX(CASE WHEN STAT_GROUP = 'MEM'
                THEN CONVERT(decimal(16,2), STAT_VALUE / 100.0) 
           END) as CPU,
       MAX(CASE WHEN STAT_GROUP = 'MEM'
                THEN CONVERT(decimal(16,2), STAT_VALUE / 100.0) 
           END) as CPU,
FROM VPXV_HIST_STAT_YEARLY
WHERE ENTITY LIKE 'vm-1783' AND
      SAMPLE_TIME > '2017-10-01' AND
      SAMPLE_TIME < '2017-12-31' AND
      STAT_GROUP IN ('CPU', 'MEM') AND
      STAT_NAME = 'USAGE'
GROUP BY SAMPLE_TIME
ORDER by SAMPLE_TIME;

它起作用了!+------+------+++|2017-10-02 00:00:00.000 | 12.04 | 7.21 | +-------------+----+----+ | 2017-10-03 00:00:00.000 | 4.89 | 2.69 | +-------------+----+----+ | 2017-10-04 00:00:00.000 | 13.70 | 18.33 | +-------------+----+----+ | 2017-10-05 00:00:00.000 | 21.80 | 30.82 | +-------------+----+----+ | 2017-10-06 00:00:00.000 | 11.67 | 16.33 | +-------------+----+----+