mysql - MySQL转置多表查询
问题描述
我正在尝试执行以下操作:
我有两个不同的表:
表_a
日期 | ID | 字段名_1 | 字段名_2 | 单元1 | Percntg_1 | 单元2 | Percntg_2 |
---|---|---|---|---|---|---|---|
01-01-2021 | 1 | 约翰·多伊 | 迈克高 | 3 | 0 | 0 | 0.62 |
05-01-2021 | 2 | 埃里克 | 塔尼亚史蒂文 | 0 | 0 | 0 | 0.32 |
2021 年 12 月 2 日 | 3 | 迈克高 | 哈罗德 | 0 | 0.95 | 0 | 0.82 |
18-02-2021 | 4 | 丽兹 | 昆汀 | 2 | 0.51 | 7 | 0.98 |
表_b
ID | 数量 | 价格 | 产品 |
---|---|---|---|
1 | 500 | 250.5 | 4 |
2 | 150 | 600 | 2 |
3 | 50 | 720 | 3 |
4 | 600 | 350 | 4 |
我想得到的是这个:
日期 | ID | 字段名 | 单元 | 百分比 | 数量 | 价格 | 产品 |
---|---|---|---|---|---|---|---|
01-01-2021 | 1 | 约翰·多伊 | 3 | 0 | 500 | 250.5 | 4 |
01-01-2021 | 1 | 迈克高 | 0 | 0.62 | 500 | 250.5 | 4 |
05-01-2021 | 2 | 埃里克 | 0 | 0 | 150 | 600 | 2 |
05-01-2021 | 2 | 塔尼亚史蒂文 | 0 | 0.22 | 150 | 600 | 2 |
2021 年 12 月 2 日 | 3 | 迈克高 | 0 | 0.95 | 50 | 720 | 3 |
2021 年 12 月 2 日 | 3 | 哈罗德 | 0 | 0.82 | 50 | 720 | 3 |
18-02-2021 | 4 | 丽兹 | 2 | 0.51 | 600 | 350 | 4 |
18-02-2021 | 4 | 昆汀 | 7 | 0.98 | 600 | 350 | 4 |
先感谢您
解决方案
首先你需要规范化table_a
,然后它是一个简单的加入table_b
:
SELECT Date,NormalData.ID,Fieldname,Unit,Percntg,Quantity,Price,Product
FROM (
SELECT Date, ID, FieldName_1 AS FieldName, Unit_1 as Unit, percntg_1 AS Percntg
FROM table_a
UNION ALL
SELECT Date, ID, FieldName_2 AS FieldName, Unit_2 as Unit, percntg_2 AS Percntg
) NormalData
LEFT INNER JOIN table_b ON NormalData.Unit = table_b.ID
请注意子查询如何使用联合,我们只需选择各个字段。
注意:我还没有在 MySQL 上测试过这种语法,但希望它能为您指明正确的方向
推荐阅读
- javascript - 如何在显示下一张或上一张幻灯片之前将第二个 .r2 动画类添加到此 mySlides div
- c++ - 对派生模板类对象的引用错误地传递给重载的 operator<< body
- reactjs - 在 React App 中播放视频时 Safari 错误
- javascript - 如何在 React/CSS 或 Material UI 中按行高的倍数截断文本?
- python - 如何获取同一列的 n 到 n-3 个数据并填充为同一行上的新列
- ios - 无法通过 BigSur 上的 CoreSimulator spawn 启动 IBCocoaTouchImageCatalogTool
- visual-studio-code - 通过 Visual Studio Code tizentv 扩展进行调试
- java - 雄猫。导入类时出现 ClassNotFoundException
- c++ - Why doesn't SO_TIMESTAMPING generate ancillary data?
- pandas - Export Pandas Dataframe to csv - Azure AutoML reads the file wrong