这样的例子已很多了,随便参考一个即可:
http://community.csdn.net/Expert/topic/3271/3271733.xml?temp=.875271
http://community.csdn.net/Expert/topic/3198/3198215.xml?temp=.7801782
...
http://community.csdn.net/Expert/topic/3271/3271733.xml?temp=.875271
http://community.csdn.net/Expert/topic/3198/3198215.xml?temp=.7801782
...
,[数值(第一周)]=sum([数值(第一周)])
,[数值(第二周)]=sum([数值(第一周)])
from(
select 国家地区,[数值(第一周)]=数值,[数值(第二周)]=0
from(
SELECT TOP 5 国家地区, COUNT(*) AS 数值
FROM 资信报告目录
WHERE (地理位置 = '欧洲') AND (委托日期 >= '2004 - 08 - 01') AND
(委托日期 <= '2004 - 08 - 7') OR
(地理位置 = '东欧') AND (委托日期 >= '2004 - 08 - 01') AND
(委托日期 <= '2004 - 08 - 7')
GROUP BY 国家地区
ORDER BY 数值 DESC)a
union all
select 国家地区,0,数值
from(
SELECT TOP 5 国家地区, COUNT(*) AS 数值
FROM 资信报告目录
WHERE (地理位置 = '欧洲') AND (委托日期 >= '2004 - 08 - 07') AND
(委托日期 <= '2004 - 08 - 14') OR
(地理位置 = '东欧') AND (委托日期 >= '2004 - 08 - 07') AND
(委托日期 <= '2004 - 08 - 14')
GROUP BY 国家地区
ORDER BY 数值 DESC)a
)b group by 国家地区
sum(case when (委托日期 >= '2004-08-01') AND (委托日期 <= '2004-08-7') then 1 else 0 end) AS [数值(第一周)],
sum(case when (委托日期 >='2004-08-07') AND (委托日期 <= '2004-08-14') then 1 else 0 end) AS [数值(第二周)],
...
FROM 资信报告目录
WHERE (地理位置 = '欧洲') AND (委托日期 >= '2004 - 08 - 01') AND
(委托日期 <= '2004 - 08 - 31') OR
(地理位置 = '东欧') AND (委托日期 >= '2004 - 08 - 01') AND
(委托日期 <= '2004 - 08 - 31')
GROUP BY 国家地区
ORDER BY [数值(第一周)] DESC或者以第一周排序:SELECT top 5 国家地区,
sum(case when (委托日期 >= '2004-08-01') AND (委托日期 <= '2004-08-7') then 1 else 0 end) AS [数值(第一周)],
sum(case when (委托日期 >='2004-08-07') AND (委托日期 <= '2004-08-14') then 1 else 0 end) AS [数值(第二周)],
...
FROM 资信报告目录
WHERE (地理位置 = '欧洲') AND (委托日期 >= '2004 - 08 - 01') AND
(委托日期 <= '2004 - 08 - 31') OR
(地理位置 = '东欧') AND (委托日期 >= '2004 - 08 - 01') AND
(委托日期 <= '2004 - 08 - 31')
GROUP BY 国家地区
ORDER BY [数值(第一周)] DESC