两表关联的分组的交叉表,如何使用sql语句完成。目标如下图

两表关联的分组的交叉表,如何使用sql语句完成。目标如下图

http://zhidao.baidu.com/question/506138720.html

SELECT
*
FROM
(
SELECT
t1.km, t1.[year], t2.[user], t2.[money]
FROM
#t1 t1 JOIN #t2 t2
ON (t1.id = t2.fid)
) subQuery
PIVOT(
SUM(subQuery.[money])
FOR subQuery.[year] IN ([2008], [2009], [2010] )
) tmp
order by
1
追问
这是不是sql server2008的专用语句?
能否转化成专门的t-sql
pivot关键字在2005中似乎不可用
回答
pivot    是 SQL  2005   新特性啊。


会不会是你数据库兼容级别是sql 2000 啊。
追问
可能,pivot语句不让使用。。。
回答
pivot 不让用,   那就要  CASE  WHEN  year = 2008 THEN  [money]  ELSE 0  END  这么写了
SELECT
t1.km,
k2.[user],
SUM (CASE WHEN year = 2008 THEN [money] ELSE 0 END) AS [2008],
SUM (CASE WHEN year = 2009 THEN [money] ELSE 0 END) AS [2009],
SUM (CASE WHEN year = 2010 THEN [money] ELSE 0 END) AS [2010]
FROM
t1 JOIN t2
ON (t1.id = t2.fid)

GROUP BY
t1.km, k2.[user]

你可能感兴趣的:(交叉表,sqlserv)