2 qq 19811781 qq_19811781 于 2017.01.12 10:23 提问

SQL 创建一个 有行转列的表 急!急!急!急! 50C
SELECT T0.[U_Project], T1.[CardName], T0.[U_SalesCost]'价格',T0.[Code]'期间' 
FROM [dbo].[@A003_INVOICE1]  T0 left join OCRD T1 on T1.[U_Project]=T0.[U_Project]  这是 要的字段 和表。
原表:
                        T0.[U_Project]  T1.[CardName]  T0.[U_SalesCost]      T0.[Code]
                                                    1                    **                       价格               2016-01
                                                                2                    **                       价格               2016-02
                                                                ........
想把T0.[code] 和 T0.[U_SalesCost] 行变成列  
例如“ T0.[U_Project]  T1.[CardName]   2016-01  2016-02   2016-03 ”
                     1                     **              价格         价格      价格
                                             2                     **              价格         价格      价格
                                            ..........

3个回答

qq_19811781
qq_19811781   2017.01.12 10:29

图片说明 结果这样的

JE_GE
JE_GE   2017.01.12 10:44
 --行转列的静态方案一:CASE WHEN,兼容sql2000
select custid,
sum(case when YEAR(orderdate)=2002 then qty end) as [2002],
sum(case when YEAR(orderdate)=2003 then qty end) as [2003],
sum(case when YEAR(orderdate)=2004 then qty end) as [2004]
from orders
group by custid;
GO
--行转列的静态方案二:PIVOT,sql2005及以后版本
select *
from (select custid,YEAR(orderdate) as years,qty from orders) as ord
pivot(sum(qty) for years in([2002],[2003],[2004]))as p
GO

试试

qq_19811781
qq_19811781 08版本的 我试了 pivot 用了报错。
11 个月之前 回复
welan123123
welan123123   2017.01.12 17:11

看这个教程,然后选择最下面的递归递归
http://www.cnblogs.com/sammon/archive/2012/05/10/2494362.html

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!