SQL 如何让一列自动扩展?

image.png

不好意思,之前描述不准确,现更正下:
数据集如上,想要结果为:每个RQ对应的WERKS 列都有:2021 2022 2023
想自动扩展(新增)行 对应JE 新增出来的赋值0
比如:
2023-05-08 2021 0
2023-05-08 2022 106.57
2023-05-08 2023 0

请问下sql如何编写

阅读 2.9k
4 个回答
WITH rq_values AS (
  SELECT DISTINCT RQ FROM your_table
),
werks_values AS (
  SELECT DISTINCT WERKS FROM your_table WHERE WERKS IN (2021, 2022, 2023)
)
SELECT
  rq_values.RQ,
  werks_values.WERKS,
  COALESCE(your_table.JE, 0) AS JE
FROM
  rq_values,
  werks_values
LEFT JOIN
  your_table
ON
  your_table.RQ = rq_values.RQ AND
  your_table.WERKS = werks_values.WERKS
ORDER BY
  rq_values.RQ, werks_values.WERKS

兄嘚, 列的大小是在表设计时指定的,因此如果要扩展列,需要修改表的结构。
试试

查看表的结构,确定需要扩展的列名称和类型:

DESC table_name;

然后 执行 ALTER TABLE 命令,将列的大小扩展到需要的大小。例如,如果需要扩展 varchar 列的大小,可以使用以下命令:

ALTER TABLE table_name MODIFY column_name VARCHAR(255);

这将把列的大小修改为 255,可以根据实际需要进行修改。

不懂的继续问我

新手上路,请多包涵

SELECT a.RQ, a.years AS WERKS

, IF(a.WERKS = a.years, a.JE,0) AS JE

FROM (

SELECT r.RQ, r.WERKS, r.JE, '2021' AS years
FROM r
UNION ALL
SELECT r.RQ, r.WERKS, r.JE, '2022' AS years
FROM r
UNION ALL
SELECT r.RQ, r.WERKS, r.JE, '2023' AS years
FROM r

) a

你把2021,2022,2023做一个临时表,然后和RQ数据关联,再用RQ,WERKS,联合主键关联JE,空数据用case处理一下

SELECT RQ,WERKS
FROM RQ_table 
CROSS JOIN (SELECT 2021 AS WERKS UNION SELECT 2022 UNION SELECT 2023) AS temp
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏