使用MySQL数据库我想存储不同"频道"的每日测量值:
date | channel | value
-----+---------+------
1.1. | 'A' | 1
1.1. | 'B' | 2
1.1. | 'C' | 3
2.1. | 'A' | 4
2.1. | 'C' | 5
3.1. | 'A' | 6
3.1. | 'B' | 7
3.1. | 'C' | 8
4.1. | 'A' | 9
4.1. | 'B' | 10
4.1. | 'C' | 11
每天都会插入当时可用的频道(在频道上方的表格中,' B'不在2.1上。)。每个频道每天不会有多个衡量标准,即(date,channel)
始终是唯一的。
我的问题:
在一个表中检索该数据的SQL命令是什么,即结果如下:
date | A | B | C
-----+----+----+---
1.1. | 1 | 2 | 3
2.1. | 4 | - | 5
3.1. | 6 | 7 | 8
4.1. | 9 | 10 | 11
可选任务:频道只是一个频道ID,另一个表将ID映射到频道名称。
(实际上我认为这是微不足道的,到处都有关于它的例子。但要么我的搜索引擎被破坏了,要么我试图在这里做一些奇怪的事情......)
注意:SQL Cross Tab Function无法解决此问题,因为我需要将结果放在单独的列中,而不是聚合成一列。
答案 0 :(得分:2)
根据您的示例,您可以尝试这种方法
<dom-module id="parent-card">
<template>
<detail-card prop-color="{{propColor}}"></detail-card>
<information-card prop-color="{{propColor}}"></information-card>
</template>
</dom-module>
<script>
class ParentCard extends Polymer.Element {
static get is() {
return 'parent-card';
}
static get properties() {
return {
propColor: {
type: String,
notify: false
}
};
}
}
window.customElements.define(ParentCard.is, ParentCard);
</script>
结果
SELECT `date`,
SUM(CASE WHEN channel_id = 'A' THEN `value` END) 'A',
SUM(CASE WHEN channel_id = 'B' THEN `value` END) 'B',
SUM(CASE WHEN channel_id = 'C' THEN `value` END) 'C'
FROM t
GROUP BY `date`
ORDER BY `date`