请问怎么实现动态行转列?(具体哪些列取自另一表)【附全部建表SQL】如果数据库设计的不合理还望大神们多多指教

灌水乐园版主 2017-05-22 02:48:12
如果数据库设计的不合理还望大神们多多指教。



SELECT
e.EQUIPMENT_NAME,
d.INDICATORS_NAME,
a.MONITORING_VALUE,
a.DATA_TIME,
a.DATA_FROM,
b. NAME AS USER_NAME,
a.CREATE_TIME,
c. NAME AS CHANGE_USER_NAME,
a.CHANGE_TIME,
a.MONITOR_DATA_ID
FROM
TB_MONITOR_DATA a
LEFT JOIN SYS_USER b ON a.USER_ID = b.USER_ID
LEFT JOIN SYS_USER c ON a.CHANGE_USER_ID = c.USER_ID
LEFT JOIN TB_MONITORING_INDICATORS d
on a.INDICATORS_ID = d.INDICATORS_ID
left join TB_EQUIPMENT e
on a.EQUIPMENT_ID = e.EQUIPMENT_ID
where 1=1
and e.EQUIPMENT_TYPE_ID = '357418c31f4b4c24a0a98cf089a2d042'
and e.WORKSHOP_ID = '83c7b00092454dd79d4463bc60471ebf'



执行上面的sql得到的结果


实际想得到的结果:
“指标1”,“指标2”分别作为列名,
具体这个列名 来自:
select  INDICATORS_ID,INDICATORS_CODE,INDICATORS_NAME from tb_monitoring_indicatorsž where EQUIPMENT_TYPE_ID='357418c31f4b4c24a0a98cf089a2d042'

参数 EQUIPMENT_TYPE_ID 和上面的sql中的EQUIPMENT_TYPE_ID一致。

下面是全部的建表sql(跟帖中附带测试数据):
-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`USER_ID` varchar(100) NOT NULL,
`USERNAME` varchar(255) DEFAULT NULL,
`PASSWORD` varchar(255) DEFAULT NULL,
`NAME` varchar(255) DEFAULT NULL,
`STATUS` varchar(32) DEFAULT NULL,
PRIMARY KEY (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for tb_equipment
-- ----------------------------
DROP TABLE IF EXISTS `tb_equipment`;
CREATE TABLE `tb_equipment` (
`EQUIPMENT_ID` varchar(100) NOT NULL,
`EQUIPMENT_NAME` varchar(255) DEFAULT NULL COMMENT '设备名称',
`EQUIPMENT_CODE` varchar(255) DEFAULT NULL COMMENT '设备编号',
`EQUIPMENT_TYPE_ID` varchar(255) DEFAULT NULL COMMENT '设备类型',
`WORKSHOP_ID` varchar(255) DEFAULT NULL COMMENT '车间',
`MANUFACTURER` varchar(255) DEFAULT NULL COMMENT '生产厂家',
`EQUIPMENT_MODEL` varchar(255) DEFAULT NULL COMMENT '设备型号',
`INSTALLATION_DATE` varchar(255) DEFAULT NULL COMMENT '安装日期',
`USER_ID` varchar(255) DEFAULT NULL COMMENT '创建人',
`CREATE_TIME` varchar(255) DEFAULT NULL COMMENT '创建时间',
`CHANGE_USER_ID` varchar(255) DEFAULT NULL COMMENT '修改人',
`CHANGE_TIME` varchar(255) DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`EQUIPMENT_ID`),
KEY `EQUIPMENT_TYPE_ID` (`EQUIPMENT_TYPE_ID`),
KEY `USER_ID` (`USER_ID`),
KEY `CHANGE_USER_ID` (`CHANGE_USER_ID`),
KEY `WORKSHOP_ID` (`WORKSHOP_ID`),
CONSTRAINT `tb_equipment_ibfk_1` FOREIGN KEY (`EQUIPMENT_TYPE_ID`) REFERENCES `tb_equipment_type` (`EQUIPMENT_TYPE_ID`),
CONSTRAINT `tb_equipment_ibfk_3` FOREIGN KEY (`USER_ID`) REFERENCES `sys_user` (`USER_ID`),
CONSTRAINT `tb_equipment_ibfk_4` FOREIGN KEY (`CHANGE_USER_ID`) REFERENCES `sys_user` (`USER_ID`),
CONSTRAINT `tb_equipment_ibfk_5` FOREIGN KEY (`WORKSHOP_ID`) REFERENCES `tb_workshop` (`WORKSHOP_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for tb_equipment_type
-- ----------------------------
DROP TABLE IF EXISTS `tb_equipment_type`;
CREATE TABLE `tb_equipment_type` (
`EQUIPMENT_TYPE_ID` varchar(100) NOT NULL,
`EQUIPMENT_TYPE_NAME` varchar(255) DEFAULT NULL COMMENT '仪器类型名称',
`EQUIPMENT_TYPE_CODE` varchar(255) DEFAULT NULL,
`USER_ID` varchar(255) DEFAULT NULL COMMENT '创建人',
`CREATE_TIME` varchar(255) DEFAULT NULL COMMENT '创建时间',
`CHANGE_USER_ID` varchar(255) DEFAULT NULL,
`CHANGE_TIME` varchar(255) DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`EQUIPMENT_TYPE_ID`),
KEY `WORKSHOP_ID` (`EQUIPMENT_TYPE_CODE`),
KEY `USER_ID` (`USER_ID`),
KEY `CHANGE_USER_ID` (`CHANGE_USER_ID`),
CONSTRAINT `tb_equipment_type_ibfk_2` FOREIGN KEY (`USER_ID`) REFERENCES `sys_user` (`USER_ID`),
CONSTRAINT `tb_equipment_type_ibfk_3` FOREIGN KEY (`CHANGE_USER_ID`) REFERENCES `sys_user` (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for tb_monitoring_indicators
-- ----------------------------
DROP TABLE IF EXISTS `tb_monitoring_indicators`;
CREATE TABLE `tb_monitoring_indicators` (
`INDICATORS_ID` varchar(100) NOT NULL,
`INDICATORS_CODE` varchar(255) DEFAULT NULL COMMENT '指标代码',
`INDICATORS_NAME` varchar(255) DEFAULT NULL COMMENT '指标名称',
`USER_ID` varchar(255) DEFAULT NULL,
`CHANGE_USER_ID` varchar(255) DEFAULT NULL,
`CREATE_TIME` varchar(255) DEFAULT NULL,
`CHANGE_TIME` varchar(255) DEFAULT NULL,
`EQUIPMENT_TYPE_ID` varchar(100) DEFAULT NULL COMMENT '设备类型',
PRIMARY KEY (`INDICATORS_ID`),
KEY `EQUIPMENT_TYPE_ID` (`EQUIPMENT_TYPE_ID`),
CONSTRAINT `tb_monitoring_indicators@009e@0090_ibfk_1` FOREIGN KEY (`EQUIPMENT_TYPE_ID`) REFERENCES `tb_equipment_type` (`EQUIPMENT_TYPE_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for tb_monitor_data
-- ----------------------------
DROP TABLE IF EXISTS `tb_monitor_data`;
CREATE TABLE `tb_monitor_data` (
`MONITOR_DATA_ID` varchar(100) NOT NULL,
`EQUIPMENT_ID` varchar(255) DEFAULT NULL COMMENT '设备',
`INDICATORS_ID` varchar(255) DEFAULT NULL COMMENT '监测指标',
`MONITORING_VALUE` float(11,0) NOT NULL COMMENT '监测值',
`DATA_TIME` varchar(255) DEFAULT NULL COMMENT '数据时间',
`DATA_FROM` varchar(255) DEFAULT NULL COMMENT '数据来源',
`USER_ID` varchar(255) DEFAULT NULL COMMENT '创建人',
`CREATE_TIME` varchar(255) DEFAULT NULL COMMENT '创建时间',
`CHANGE_USER_ID` varchar(255) DEFAULT NULL COMMENT '修改人',
`CHANGE_TIME` varchar(255) DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`MONITOR_DATA_ID`),
KEY `EQUIPMENT_ID` (`EQUIPMENT_ID`),
KEY `INDICATORS_ID` (`INDICATORS_ID`),
CONSTRAINT `tb_monitor_data_ibfk_1` FOREIGN KEY (`EQUIPMENT_ID`) REFERENCES `tb_equipment` (`EQUIPMENT_ID`),
CONSTRAINT `tb_monitor_data_ibfk_2` FOREIGN KEY (`INDICATORS_ID`) REFERENCES `tb_monitoring_indicatorsž` (`INDICATORS_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for tb_workshop
-- ----------------------------
DROP TABLE IF EXISTS `tb_workshop`;
CREATE TABLE `tb_workshop` (
`WORKSHOP_ID` varchar(100) NOT NULL,
`WORKSHOP_NAME` varchar(255) DEFAULT NULL COMMENT '车间名称',
`WORKSHOP_CODE` varchar(255) DEFAULT NULL COMMENT '车间编码',
`WORKSHOP_INDEX` varchar(255) DEFAULT NULL,
`USER_ID` varchar(255) DEFAULT NULL COMMENT '创建人',
`CREATE_TIME` varchar(255) DEFAULT NULL COMMENT '创建时间',
`CHANGE_USER_ID` varchar(255) DEFAULT NULL,
`CHANGE_TIME` varchar(255) DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`WORKSHOP_ID`),
KEY `USER_ID` (`USER_ID`),
KEY `CHANGE_USER_ID` (`CHANGE_USER_ID`),
CONSTRAINT `tb_workshop_ibfk_1` FOREIGN KEY (`USER_ID`) REFERENCES `sys_user` (`USER_ID`),
CONSTRAINT `tb_workshop_ibfk_2` FOREIGN KEY (`CHANGE_USER_ID`) REFERENCES `sys_user` (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
...全文
300 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2017-05-23
  • 打赏
  • 举报
回复
可以尝试先参考下贴中的例子 MySQL交叉表 在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx( id int primary key, c1 c...
灌水乐园版主 2017-05-22
  • 打赏
  • 举报
回复
-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES ('1', 'admin', 'de41b7fb99201d8334c23c014db35ecd92df81bc', '系统管理员', '0');
INSERT INTO `sys_user` VALUES ('d56949d95b39443fb7a599409bea48da', 'test', 'ee89026a6c5603c51b4504d218ac60f6874b7750', '测试账户', '0');
-- ----------------------------
-- Records of tb_equipment
-- ----------------------------
INSERT INTO `tb_equipment` VALUES ('0ea2c749f8334aedb4cd72e231bbddbe', '1#设备类型1', '1#SBLX1', 'a86e8154fd974a279ef35894def7b3b3', '8a094eaae6a949f6b7f080cc59d9f970', '安防', 'SBLX1', '2017-05-23', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:32:52', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:32:52');
INSERT INTO `tb_equipment` VALUES ('2e7b7d3371e0430fb5b950569307b014', '2#湿度计', '2#SDJ', '9fb6e9b90c7b46c8854e03ac4cd92fe5', '72e5da370914401f92f97e0ddad72280', '安防', 'SDJ', '2017-05-15', 'd56949d95b39443fb7a599409bea48da', '2017-05-15 11:23:43', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:29:27');
INSERT INTO `tb_equipment` VALUES ('55d31f4abb824134ab002332e66862f4', '2#温度计', '2#WDJ', '357418c31f4b4c24a0a98cf089a2d042', '83c7b00092454dd79d4463bc60471ebf', '安防', 'WDJ', '2017-05-22', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:17:04', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:17:04');
INSERT INTO `tb_equipment` VALUES ('70b7d4a6063c4805a8953e09300bd2f7', '1#温度计', '1#WDJ', '357418c31f4b4c24a0a98cf089a2d042', '83c7b00092454dd79d4463bc60471ebf', '安防', 'WDJ', '2017-05-22', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:04:52', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:12:07');
INSERT INTO `tb_equipment` VALUES ('e9ff76d171ad42b89917cf7e14bf556b', '1#湿度计', '1#SDJ', '9fb6e9b90c7b46c8854e03ac4cd92fe5', '72e5da370914401f92f97e0ddad72280', '安防', 'SDJ', '2017-05-14', 'd56949d95b39443fb7a599409bea48da', '2017-05-14 16:44:27', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:29:51');
INSERT INTO `tb_equipment` VALUES ('ee99a441d0bc4a11814961b5601f7a85', '3#温度计', '3#WDJ', '357418c31f4b4c24a0a98cf089a2d042', '83c7b00092454dd79d4463bc60471ebf', '安防', 'WDJ', '2017-05-22', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:24:10', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:24:10');
INSERT INTO `tb_equipment` VALUES ('f19fd699ba27485da915722453a139b7', '1#设备类型4', '1#SBLX4', 'eb5d06f868084ff389c721d49b5744b1', '7fe340d5e54c4a8ca58a8691d477b987', '安防', 'SBLX4', '2017-05-14', 'd56949d95b39443fb7a599409bea48da', '2017-05-14 16:45:21', 'd56949d95b39443fb7a599409bea48da', '2017-05-14 16:45:21');
INSERT INTO `tb_equipment` VALUES ('f2b1fdc4929048fd83ee5c793ba09619', '1#设备类型1', '1#SBLX11', 'a86e8154fd974a279ef35894def7b3b3', '90fcc4b9aaab4e079e5f266eb8a4147b', '安防', 'SBLX1', '2017-05-14', 'd56949d95b39443fb7a599409bea48da', '2017-05-14 16:39:09', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:11:55');
-- ----------------------------
-- Records of tb_equipment_type
-- ----------------------------
INSERT INTO `tb_equipment_type` VALUES ('357418c31f4b4c24a0a98cf089a2d042', '湿度计', 'SDJ', 'd56949d95b39443fb7a599409bea48da', '2017-05-16 18:28:45', 'd56949d95b39443fb7a599409bea48da', '2017-05-16 18:45:09');
INSERT INTO `tb_equipment_type` VALUES ('9fb6e9b90c7b46c8854e03ac4cd92fe5', '温度计', 'WDJ', 'd56949d95b39443fb7a599409bea48da', '2017-05-04 10:01:35', 'd56949d95b39443fb7a599409bea48da', '2017-05-17 18:39:01');
INSERT INTO `tb_equipment_type` VALUES ('a86e8154fd974a279ef35894def7b3b3', '设备类型1', 'SBLX1', 'd56949d95b39443fb7a599409bea48da', '2017-05-04 10:01:35', 'd56949d95b39443fb7a599409bea48da', '2017-05-04 11:56:14');
INSERT INTO `tb_equipment_type` VALUES ('c5f8e732af0f45d49b2b945a73ad4406', '设备类型2', 'SBLX2', 'd56949d95b39443fb7a599409bea48da', '2017-05-17 16:44:44', 'd56949d95b39443fb7a599409bea48da', '2017-05-17 16:44:44');
INSERT INTO `tb_equipment_type` VALUES ('eb5d06f868084ff389c721d49b5744b1', '设备类型4', 'SBLX4', 'd56949d95b39443fb7a599409bea48da', '2017-05-04 10:01:35', 'd56949d95b39443fb7a599409bea48da', '2017-05-04 11:56:40');
-- ----------------------------
-- Records of tb_monitoring_indicators
-- ----------------------------
INSERT INTO `tb_monitoring_indicators` VALUES ('48035785195a49e3880d6c5cdf8559a3', 'Y', '指标1', null, 'd56949d95b39443fb7a599409bea48da', null, '2017-05-16 18:45:09', '357418c31f4b4c24a0a98cf089a2d042');
INSERT INTO `tb_monitoring_indicators` VALUES ('4d13f75d24bc49febb911abc81b0be32', 'X', '指标2', null, 'd56949d95b39443fb7a599409bea48da', null, '2017-05-16 18:45:09', '357418c31f4b4c24a0a98cf089a2d042');
INSERT INTO `tb_monitoring_indicators` VALUES ('d591a17a6d1f4052a1a4f1e4b65ccba5', 'WD', '温度', 'd56949d95b39443fb7a599409bea48da', 'd56949d95b39443fb7a599409bea48da', '2017-05-17 18:39:38', '2017-05-17 18:39:33', '9fb6e9b90c7b46c8854e03ac4cd92fe5');
-- ----------------------------
-- Records of tb_monitor_data
-- ----------------------------
INSERT INTO `tb_monitor_data` VALUES ('51776eea096840bb930056b6a1d7aae4', '55d31f4abb824134ab002332e66862f4', '48035785195a49e3880d6c5cdf8559a3', '3', '2017-05-21', 'manual', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:41:01', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:41:01');
INSERT INTO `tb_monitor_data` VALUES ('bb1d818fcf294a4ba80fcad1ba731d7c', '55d31f4abb824134ab002332e66862f4', '4d13f75d24bc49febb911abc81b0be32', '2', '2017-05-21', 'manual', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:37:04', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:37:04');
INSERT INTO `tb_monitor_data` VALUES ('cadd358493b94f1c87add42239c58da7', '70b7d4a6063c4805a8953e09300bd2f7', '48035785195a49e3880d6c5cdf8559a3', '1', '2017-05-22', 'manual', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:36:44', 'd56949d95b39443fb7a599409bea48da', '2017-05-22 11:36:44');
-- ----------------------------
-- Records of tb_workshop
-- ----------------------------
INSERT INTO `tb_workshop` VALUES ('4421aaf70b7844b0bdad3935d1d41f89', '车间7', 'CYHMH', '7', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:23:58', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:23:58');
INSERT INTO `tb_workshop` VALUES ('44f2c7d7d51746deb6768e75dc7b9f45', '车间4', 'NQTD', '4', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:23:37', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:23:37');
INSERT INTO `tb_workshop` VALUES ('4f8deba236c2453e8582a3fe53232345', '车间8', 'CHSD', '8', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:24:09', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:24:09');
INSERT INTO `tb_workshop` VALUES ('72e5da370914401f92f97e0ddad72280', '车间1', 'CHZ', '1', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 13:47:21', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 13:47:21');
INSERT INTO `tb_workshop` VALUES ('7fe340d5e54c4a8ca58a8691d477b987', '车间2', 'NGQ', '2', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 13:47:28', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 13:47:28');
INSERT INTO `tb_workshop` VALUES ('83c7b00092454dd79d4463bc60471ebf', '车间9', 'MHCKZ', '9', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:24:17', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:24:17');
INSERT INTO `tb_workshop` VALUES ('8a094eaae6a949f6b7f080cc59d9f970', '车间6', 'SDCK', '6', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:23:52', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:23:52');
INSERT INTO `tb_workshop` VALUES ('90fcc4b9aaab4e079e5f266eb8a4147b', '车间3', 'JKZ', '3', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:23:21', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:23:21');
INSERT INTO `tb_workshop` VALUES ('fac4369ba6544661b1cb9bc708e6d7c7', '车间5', 'BQTD', '5', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:23:45', 'd56949d95b39443fb7a599409bea48da', '2017-05-12 15:23:45');

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧