统计和行转列有关问题

统计和行转列问题
本帖最后由 wybwml2008 于 2015-05-08 08:19:17 编辑
数据表如下:
统计和行转列有关问题
欲统计结果如下:
统计和行转列有关问题
望指教。谢谢了
------解决思路----------------------
--动态
DECLARE @SQL VARCHAR(8000)--SQL2005+可以用VARCHAR(MAX)代替
SET @SQL=''
SELECT @SQL=@SQL+',SUM(CASE WHEN jc_lb=''长居证''AND jc_ssjd='''+jc_ssjd+''' THEN 1 END)['+jc_ssjd+'长居证]'
+',SUM(CASE WHEN jc_lb=''临居证''AND jc_ssjd='''+jc_ssjd+''' THEN 1 END)['+jc_ssjd+'临居证]'
+',SUM(CASE WHEN jc_ssjd='''+jc_ssjd+''' THEN 1 END)['+jc_ssjd+'小计]'
FROM TB GROUP BY jc_ssjd
SET @SQL='SELECT '+STUFF(@SQL,1,1,'')+'FROM TB'
PRINT @SQL
EXEC(@SQL)
--静态
SELECT
SUM(CASE WHEN jc_lb='长居证'AND jc_ssjd='东升街道' THEN 1 END)[东升街道长居证]
,SUM(CASE WHEN jc_lb='临居证'AND jc_ssjd='东升街道' THEN 1 END)[东升街道临居证]
,SUM(CASE WHEN jc_ssjd='东升街道' THEN 1 END)[东升街道小计]
,SUM(CASE WHEN jc_lb='长居证'AND jc_ssjd='公兴街道' THEN 1 END)[公兴街道长居证]
,SUM(CASE WHEN jc_lb='临居证'AND jc_ssjd='公兴街道' THEN 1 END)[公兴街道临居证]
,SUM(CASE WHEN jc_ssjd='公兴街道' THEN 1 END)[公兴街道小计]
,SUM(CASE WHEN jc_lb='长居证'AND jc_ssjd='黄家街道' THEN 1 END)[黄家街道长居证]
,SUM(CASE WHEN jc_lb='临居证'AND jc_ssjd='黄家街道' THEN 1 END)[黄家街道临居证]
,SUM(CASE WHEN jc_ssjd='黄家街道' THEN 1 END)[黄家街道小计]
FROM TB

--TB换成你的表名 SQL没有合并表头的概念 你放到前端去做