咨询一个列转行的问题

zf_wl 2017-07-22 02:18:13


为什么百度来的代码 ,结果在一行显示,照着改的代码,就是多行.
...全文
293 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2017-07-22
  • 打赏
  • 举报
回复
这是PIVOT的限制,不套一层,有其它列会影响结果,所以有其它列时要用case when 去处理
参照
http://bbs.csdn.net/topics/240002706
zf_wl 2017-07-22
  • 打赏
  • 举报
回复
引用 5 楼 roy_88 的回复:
当t_WuliuFayunEntry 还其它列时会出现你所说的情况 改为 e.g.
SELECT 
*
FROM (SELECT cCode,运费合计,隶属体系 FROM t_WuliuFayunEntry ) AS t1
pivot( SUM(运费合计) FOR 隶属体系 IN ([直销],[经销])) AS t2
可以用了. 但是不明白为什么还要在外面套一层呢.
zf_wl 2017-07-22
  • 打赏
  • 举报
回复
引用 2 楼 zhouyuehai1978 的回复:
你先把你实际用的原表贴出来,才能看出你哪里写错了



这是表实际数据
中国风 2017-07-22
  • 打赏
  • 举报
回复
当t_WuliuFayunEntry 还其它列时会出现你所说的情况 改为 e.g.
SELECT 
*
FROM (SELECT cCode,运费合计,隶属体系 FROM t_WuliuFayunEntry ) AS t1
pivot( SUM(运费合计) FOR 隶属体系 IN ([直销],[经销])) AS t2
AcHerat 元老 2017-07-22
  • 打赏
  • 举报
回复
sum(运费合计) 改为 sum(isnull(运费合计,0))
zhouyuehai1978 2017-07-22
  • 打赏
  • 举报
回复
还有,你和例子相比多了一个cCode,你先把这列不取试试看
zhouyuehai1978 2017-07-22
  • 打赏
  • 举报
回复
你先把你实际用的原表贴出来,才能看出你哪里写错了
二月十六 版主 2017-07-22
  • 打赏
  • 举报
回复
楼主提供一下表结构和测试数据

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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