当前位置: 代码迷 >> Sql Server >> 晕 又是sql列转行的有关问题
  详细解决方案

晕 又是sql列转行的有关问题

热度:285   发布时间:2016-04-24 09:20:41.0
晕 又是sql列转行的问题

SELECT  客户编号,客户名称,
sum(case 品牌 when   '君悦' then 数量 else 0 end) AS '君悦数量',
sum(case 品牌 when   '君悦' then 金额 else 0 end) AS '君悦金额',
sum(case 品牌 when  '博瓷' then 数量 else 0 end)AS '博瓷数量',
sum(case 品牌 when '博瓷' then 金额 else 0 end )AS '博瓷金额',
sum(case 品牌 when '英伦' then 数量 else 0 end) AS '英伦数量',
sum(case 品牌 when  '英伦' then 金额 else 0 end)AS '英伦金额',
sum(case 品牌 when  '香莱尔' then 数量 else 0 end) AS '香莱尔数量',
sum(case 品牌 when  '香莱尔' then 金额 else 0 end) AS '香莱尔金额',
sum(case 品牌 when  '香奈尔' then 数量 else 0 end) AS '香奈尔数量',
sum(case 品牌 when  '香奈尔' then 金额 else 0 end )AS '香奈尔金额',
sum(case 品牌 when  '晶铂微晶' then 数量 else 0 end) AS '晶铂微晶数量',
sum(case 品牌 when  '晶铂微晶' then 金额 else 0 end) AS '晶铂微晶金额',
sum(case 品牌 when  '华瓷' then 数量 else 0 end) AS '华瓷数量',
sum(case 品牌 when  '华瓷' then 金额 else 0 end) AS '华瓷金额',
sum(case 品牌 when '米兰诺' then 数量 else 0 end) AS '米兰诺数量',
sum(case 品牌 when  '米兰诺' then 金额 else 0 end) AS '米兰诺金额',
sum(case 品牌 when '巴罗莎' then 数量 else 0 end) AS '巴罗莎数量',
sum(case 品牌 when  '巴罗莎' then 金额 else 0 end )AS '巴罗莎金额',
sum(case 品牌 when  'A派' then 数量 else 0 end )AS 'A派数量',
sum(case 品牌 when  'A派' then 金额 else 0 end )AS 'A派金额',
sum(case 品牌 when  '格尔' then 数量 else 0 end) AS '格尔数量',
sum(case 品牌 when  '格尔' then 金额 else 0 end )AS '格尔金额',
sum(case 品牌 when  '黑金玉' then 数量 else 0 end) AS '黑金玉数量',
sum(case 品牌 when '黑金玉' then 金额 else 0 end) AS '黑金玉金额',
总数量 ,
总金额 
FROM (
select  dl.cCusCode 客户编号,dl.cCusName 客户名称,dls.cInvCode 品牌编号,
品牌=(select cInvDefine2   from Inventory it with(nolock) where it.cInvCode=dls.cInvCode ) , 
sum(dls.IQuantity) 数量,
sum(iMoney )金额,
总数量=(select SUM(dlses.IQuantity) from DispatchList dlss,DispatchLists dlses with(nolock)
where dlss.dDate between '2014-01-01' 
and  '2014-02-01'
and dlss.DLID=dlses.DLID 
and dlss.cCusCode=dl.cCusCode  ) ,
总金额=(select SUM(dlses.iMoney)from DispatchList dlss,DispatchLists dlses with(nolock)
where dlss.dDate between '2014-01-01' and  '2014-02-01' and dlss.DLID=dlses.DLID and dlss.cCusCode=dl.cCusCode  ) 
from DispatchList dl,DispatchLists dls with(nolock)
where  dl.DLID=dls.DLID and dl.dDate between '2014-01-01' and  '2014-02-01' and bReturnFlag=0
group by dl.cCusCode ,dl.cCusName ,dls.cInvCode 
) a 
GROUP by 客户编号,客户名称,总数量,总金额



------解决思路----------------------
认真看一下这篇博文吧!
http://www.cnblogs.com/cpcpc/archive/2013/04/08/3009021.html
------解决思路----------------------
帮顶了,这个确实很复杂啊
  相关解决方案