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 ** 价格 价格 价格
..........
--行转列的静态方案一: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
试试
看这个教程,然后选择最下面的递归递归
http://www.cnblogs.com/sammon/archive/2012/05/10/2494362.html