【发布时间】:2019-07-21 17:53:08
【问题描述】:
我想明智地获取每个坦克的价值日期,但动态地。bcoz 将来可能会添加更多坦克。
SET SESSION group_concat_max_len = 1000000;
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(CASE WHEN f1.Tank_ID= ''',
f1.Tank_ID,
''' THEN nf1.'Receipt' END) AS '
f1.Tank
)
)INTO @sql
FROM
tank_details AS nf1
RIGHT JOIN
tank AS f1 ON f1.Tank_ID = nf1.Tank_ID
group by DATE(`Date`);
表名:“坦克”
Tank_ID Tank
1 Tank 1
2 Tank 2
3 Tank 3
4 Tank 4
5 Tank 5
表名:'tank_details'
Tank_ID Receipt Date
1 1000 2019-07-10
2 2000 2019-07-10
3 3000 2019-07-10
1 0 2019-07-10
1 0 2019-07-15
3 0 2019-07-15
2 0 2019-07-15
3 0 2019-07-15
1 250 2019-07-15
2 200 2019-07-15
3 800 2019-07-15
1 250 2019-07-15
4 350 2019-07-15
1 0 2019-07-20
2 0 2019-07-20
3 0 2019-07-20
4 0 2019-07-20
1 300 2019-07-20
2 1200 2019-07-20
3 1400 2019-07-20
4 900 2019-07-20
5 20 2019-07-20
1 500 2019-07-20
sql查询想要的结果,行应该以clomuns结尾。
Date Receipt Tank 1 Tank 2 Tank 3 Tank 4 Tank 5
2019-07-10 6000 1000 2000 3000 NULL NULL
2019-07-15 1850 500 200 800 350 NULL
2019-07-20 4320 800 1200 1400 900 20
【问题讨论】:
-
认真考虑处理应用代码中数据显示的问题
-
您应该寻找存储过程和循环。我看不到其他方式。
标签: mysql