如何将字段“月份2”和“成本项目”合并为一个新列

image.png

以下为SQL

SELECT *FROM SELECT F_YUE as 月份,F_NIAN as 年度,SUM(F_FYJE30) AS 航油消耗,SUM(F_FYJE5) AS 起降服务费,SUM(F_FYJE18) AS 头等舱服务费,SUM(F_FYJE26) AS 餐食机供品,SUM(F_FYJE20) AS 民航发展基金,SUM(F_FYJE21) AS 不正常航班费用,SUM(F_FYJE9) AS 客货邮行赔偿费,SUM(F_FYJE24) AS 机组食宿费用,SUM(F_FYJE17) AS 系统使用费,SUM(F_FYJE25) AS 飞行小时费,SUM(F_FYJE10) AS 代理手续费,SUM(F_FYJE105) AS 机务维修成本,SUM(F_FYJE62) AS 客舱服务费,SUM(F_FYJE296) AS BSP处理费,SUM(F_FYJE382) AS 其他变动成本,F_JXID as 机型代码,0,(SELECT F_JXDM FROM GG_FJJX WHERE F_JXID=A.F_JXID) AS 机型, case when length(F_YUE)=1 then to_char(F_NIAN)||'-'||'0'||to_char(F_YUE) else to_char(F_NIAN)||'-'||to_char(F_YUE) end as 月份2 FROM (SELECT /*+INDEX(A)*/F_YUE,F_NIAN,F_FYJE30,F_FYJE5,F_FYJE18,F_FYJE26,F_FYJE20,F_FYJE21,F_FYJE9,F_FYJE24,F_FYJE17,F_FYJE25,F_FYJE10,F_FYJE105,F_FYJE62,F_FYJE296,F_FYJE382,F_JXID,F_LJHD FROM FX_ZHFXB A  WHERE  F_CYGS IN (1,2)) A WHERE 1=1 GROUP BY F_YUE,F_NIAN,F_JXID ORDER BY F_YUE NULLS FIRST,F_NIAN NULLS FIRST,F_JXID NULLS FIRSTUNPIVOT ( 金额 FOR 成本项目 IN ("航油消耗","起降服务费","头等舱服务费","餐食机供品","民航发展基金","不正常航班费用","客货邮行赔偿费","机组食宿费用","系统使用费","飞行小时费","代理手续费","机务维修成本","客舱服务费","BSP处理费","其他变动成本")) WHERE 年度='2022' and 月份='09' AND 金额<>0

SQL yzm742603 发布于 2022-10-26 13:01
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
zsh331Lv8专家互助
发布于2022-10-26 13:53

Oracle语法,需求单纯只是想把这2个字段拼接成一个字段?如果是这样的话,直接在SQL中新增一个拼接字段,参考 F_YUE || F_NIAN as new_t 即可。当然,在finebi通过自助数据集的新增列将这2个字段用函数CONCATENATE()拼接在一起也行。

————————————

  • yzm742603 yzm742603(提问者) 在哪个位置加?
    2022-10-26 13:57 
  • zsh331 zsh331 回复 yzm742603(提问者) SELECT F_YUE || F_NIAN AS new_t , F_YUE AS 月份, F_NIAN AS 年度…
    2022-10-26 14:14 
  • yzm742603 yzm742603(提问者) 回复 zsh331 我加到前面部分是报错的,麻烦再看下 SELECT *FROM (SELECT 月份2||成本项目 as 连接项,F_YUE as 月份,F_NIAN as 年度,SUM(F_FYJE30) AS 航油消耗,SUM(F_FYJE5) AS 起降服务费,SUM(F_FYJE18) AS 头等舱服务费,SUM(F_FYJE26) AS 餐食机供品,SUM(F_FYJE20) AS 民航发展基金,SUM(F_FYJE21) AS 不正常航班费用,SUM(F_FYJE9) AS 客货邮行赔偿费,SUM(F_FYJE24) AS 机组食宿费用,SUM(F_FYJE17) AS 系统使用费,SUM(F_FYJE25) AS 飞行小时费,SUM(F_FYJE10) AS 代理手续费,SUM(F_FYJE105) AS 机务维修成本,SUM(F_FYJE62) AS 客舱服务费,SUM(F_FYJE296) AS BSP处理费,SUM(F_FYJE382) AS 其他变动成本,F_JXID as 机型代码,0,(SELECT F_JXDM FROM GG_FJJX WHERE F_JXID=A.F_JXID) AS 机型, case when length(F_YUE)=1 then to_char(F_NIAN)||\'-\'||\'0\'||to_char(F_YUE) else to_char(F_NIAN)||\'-\'||to_char(F_YUE) end as 月份2 FROM (SELECT /*+INDEX(A)*/F_YUE,F_NIAN,F_FYJE30,F_FYJE5,F_FYJE18,F_FYJE26,F_FYJE20,F_FYJE21,F_FYJE9,F_FYJE24,F_FYJE17,F_FYJE25,F_FYJE10,F_FYJE105,F_FYJE62,F_FYJE296,F_FYJE382,F_JXID,F_LJHD FROM FX_ZHFXB A WHERE F_CYGS IN (1,2)) A WHERE 1=1 GROU
    2022-10-26 14:22 
  • zsh331 zsh331 回复 yzm742603(提问者) 你这个成本项目字段是通过列转行生成的,那这个拼接你直接写在最外层 select * 那里去
    2022-10-26 14:32 
  • yzm742603 yzm742603(提问者) 回复 zsh331 这样书写的话,只能出来一个字段了,要如何修改? SELECT 月份2||成本项目 FROM (SELECT F_YUE as 月份,F_NIAN as 年度,SUM(F_FYJE30) AS 航油消耗,SUM(F_FYJE5) AS 起降服务费,SUM(F_FYJE18) AS 头等舱服务费,SUM(F_FYJE26) AS 餐食机供品,SUM(F_FYJE20) AS 民航发展基金,SUM(F_FYJE21) AS 不正常航班费用,SUM(F_FYJE9) AS 客货邮行赔偿费,SUM(F_FYJE24) AS 机组食宿费用,SUM(F_FYJE17) AS 系统使用费,SUM(F_FYJE25) AS 飞行小时费,SUM(F_FYJE10) AS 代理手续费,SUM(F_FYJE105) AS 机务维修成本,SUM(F_FYJE62) AS 客舱服务费,SUM(F_FYJE296) AS BSP处理费,SUM(F_FYJE382) AS 其他变动成本,F_JXID as 机型代码,0,(SELECT F_JXDM FROM GG_FJJX WHERE F_JXID=A.F_JXID) AS 机型, case when length(F_YUE)=1 then to_char(F_NIAN)||\'-\'||\'0\'||to_char(F_YUE) else to_char(F_NIAN)||\'-\'||to_char(F_YUE) end as 月份2 FROM (SELECT /*+INDEX(A)*/F_YUE,F_NIAN,F_FYJE30,F_FYJE5,F_FYJE18,F_FYJE26,F_FYJE20,F_FYJE21,F_FYJE9,F_FYJE24,F_FYJE17,F_FYJE25,F_FYJE10,F_FYJE105,F_FYJE62,F_FYJE296,F_FYJE382,F_JXID,F_LJHD FROM FX_ZHFXB A WHERE F_CYGS IN (1,2)) A WHERE 1=1 GROUP BY F_YUE,F_NIAN,F_JXID ORDER BY F_YUE NULLS FIRST,F_NIAN NULLS FIRST,F_JXID NULLS FIRST)UNPIVOT ( 金额 FOR 成本项目 IN (\"航油消耗\",\"起降服务费\",\"头等舱服务费\",\"餐食机供品\",\"民航发展基金\",\"不正常航班费用\",\"客货邮行赔偿费\",\"机组食宿费用\",\"系统使用费\",\"飞行小时费\",\"代理手续费\",\"机务维修成本\",\"客舱服务费\",\"BSP处理费\",\"其他变动成本\")) WHERE 年度=\'2022\' and 月份=\'09\' AND 金额<>0
    2022-10-26 15:10 
  • 2关注人数
  • 346浏览人数
  • 最后回答于:2022-10-26 13:53
    请选择关闭问题的原因
    确定 取消
    返回顶部