SQL(列转行)优化

nuoboxgx 2010-03-19 12:58:15
表大概100万数据

由以下的SQL Union而成
实际执行时耗时5分钟以上
及其烦恼
高人帮着优化一下啊?

是不是可以把公共字段提出来不用每次都Union啊 (公共字段F29,F1,F2,F7,F31,F3,F4,F8)


SELECT F29,F1,F2,F7,F31,F3,F4,F8,F9 AS UF9,F19 AS UF19 FROM DMSRC.clhsg2 WHERE (F31='02' OR F31 IS NULL)
UNION ALL
SELECT F29,F1,F2,F7,F31,F3,F4,F8,F10 AS UF9,F20 AS UF19 FROM DMSRC.clhsg2 WHERE (F31='02' OR F31 IS NULL)
UNION ALL
SELECT F29,F1,F2,F7,F31,F3,F4,F8,F11 AS UF9,F21 AS UF19 FROM DMSRC.clhsg2 WHERE (F31='02' OR F31 IS NULL)
UNION ALL
SELECT F29,F1,F2,F7,F31,F3,F4,F8,F12 AS UF9,F22 AS UF19 FROM DMSRC.clhsg2 WHERE (F31='02' OR F31 IS NULL)
UNION ALL
SELECT F29,F1,F2,F7,F31,F3,F4,F8,F13 AS UF9,F23 AS UF19 FROM DMSRC.clhsg2 WHERE (F31='02' OR F31 IS NULL)
UNION ALL
SELECT F29,F1,F2,F7,F31,F3,F4,F8,F14 AS UF9,F24 AS UF19 FROM DMSRC.clhsg2 WHERE (F31='02' OR F31 IS NULL)
UNION ALL
SELECT F29,F1,F2,F7,F31,F3,F4,F8,F15 AS UF9,F25 AS UF19 FROM DMSRC.clhsg2 WHERE (F31='02' OR F31 IS NULL)
UNION ALL
SELECT F29,F1,F2,F7,F31,F3,F4,F8,F16 AS UF9,F26 AS UF19 FROM DMSRC.clhsg2 WHERE (F31='02' OR F31 IS NULL)
UNION ALL
SELECT F29,F1,F2,F7,F31,F3,F4,F8,F17 AS UF9,F27 AS UF19 FROM DMSRC.clhsg2 WHERE (F31='02' OR F31 IS NULL)
UNION ALL
SELECT F29,F1,F2,F7,F31,F3,F4,F8,F18 AS UF9,F28 AS UF19 FROM DMSRC.clhsg2 WHERE (F31='02' OR F31 IS NULL)
...全文
176 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangxiao_jiang 2010-03-19
  • 打赏
  • 举报
回复
用UNION ,在最外面用一下distinct一下。
WWWWA 2010-03-19
  • 打赏
  • 举报
回复
是不是可以把公共字段提出来不用每次都Union啊:可以用视图 OR 临时表,
贴记录及要求结果出来看看
nuoboxgx 2010-03-19
  • 打赏
  • 举报
回复
self 顶一下

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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