查询中使用列小计
来源:互联网 发布:监控平台用什么编程 编辑:程序博客网 时间:2024/05/18 01:32
drop table table1
go
create table TABLE1(memname varchar(10), PROJECT varchar(10),manhour int)
go
insert into table1 select '人员1','工程1',23
union all select '人1','工程2',10
union all select '人2','工程1',10
union all select '人3','工程2',15
union all select '人4','工程3',50
declare @sql varchar(8000)
select @sql = ' select memname'
select @sql = @sql + ',sum(case PROJECT when '''+PROJECT+''' then manhour else 0 end) ['+PROJECT+']'
from (select distinct PROJECT from table1 ) as a
select @sql = @sql+',sum(manhour) as 合计 from table1 group by memname'
exec(@sql)
我的使际工作SQL:
DECLARE @sql VARCHAR(8000)
SET @sql = 'select PROVINCE as 省份,'
SELECT @sql = @sql + 'sum(case CUST_TYPE when '''
+ CUST_TYPE + ''' then 1
else 0 end) as ''' + CUST_TYPE + ''','
FROM ( SELECT DISTINCT
CUST_TYPE
FROM ( SELECT YGCSM_SYS_ENUM_ITEM.ITEM_TITLE AS CUST_TYPE
FROM YGCSM_SYS_ENUM_ITEM
WHERE ITEM_TYPE = 2
) AS a
WHERE CUST_TYPE IS NOT NULL
) AS SelectPROVINCE
SELECT @sql = LEFT(@sql, LEN(@sql) - 1)
+ ' ,sum(SUmss) as [小计] from (SELECT
PROVINCE = ( SELECT YGCSM_SYS_ENUM_ITEM_YGSL.ITEM_TITLE FROM YGCSM_SYS_ENUM_ITEM_YGSL WHERE ITEM_ID = TempCU.PROVINCE ), CUST_TYPE = ( SELECT
YGCSM_SYS_ENUM_ITEM.ITEM_TITLE FROM YGCSM_SYS_ENUM_ITEM WHERE ITEM_ID = TempCU.CUST_LEVEL ), SUmss=1 from ((SELECT DISTINCT
Customer.CUST_NO, Customer.CUST_NAME, Customer.PROVINCE, Customer.CUST_TYPE1, Customer.CUST_TYPE2, Customer.CUST_LEVEL FROM
YGCSM_SYS_CUSTOMER_CURR Customer INNER JOIN dbo.YGCSM_SYS_CUST_TO_ORG_CURR B ON Customer.CUST_NO=B.CUST_NO INNER JOIN (SELECT EP_QX_USER_TO_ORG.USERID,
EP_QX_USER_TO_ORG.ORGID FROM EP_QX_USER_TO_ORG WHERE EP_QX_USER_TO_ORG.USERID = 610) as DeptSql ON B.ORG_ID=DeptSql.OrgId AND Customer.AUDIT_STATE=1 AND
Customer.is_Stop=0)) as TempCU) AS TempP group by PROVINCE '
PRINT @sql
EXEC ( @sql
)
SQL:
SELECT PROVINCE AS 省份,
SUM(CASE CUST_TYPE
WHEN '多经集团' THEN 1
ELSE 0
END) AS '多经集团',
SUM(CASE CUST_TYPE
WHEN '多经企业' THEN 1
ELSE 0
END) AS '多经企业',
SUM(CASE CUST_TYPE
WHEN '发电厂' THEN 1
ELSE 0
END) AS '发电厂',
SUM(CASE CUST_TYPE
WHEN '附属单位' THEN 1
ELSE 0
END) AS '附属单位',
SUM(CASE CUST_TYPE
WHEN '集团总部' THEN 1
ELSE 0
END) AS '集团总部',
SUM(CASE CUST_TYPE
WHEN '区域公司' THEN 1
ELSE 0
END) AS '区域公司',
SUM(CASE CUST_TYPE
WHEN '省公司' THEN 1
ELSE 0
END) AS '省公司',
SUM(CASE CUST_TYPE
WHEN '市公司' THEN 1
ELSE 0
END) AS '市公司',
SUM(CASE CUST_TYPE
WHEN '县公司' THEN 1
ELSE 0
END) AS '县公司',
SUM(CASE CUST_TYPE
WHEN '乡镇所' THEN 1
ELSE 0
END) AS '乡镇所',
SUM(CASE CUST_TYPE
WHEN '行业外企业' THEN 1
ELSE 0
END) AS '行业外企业'
,
SUM (SUmss) AS '小计'
FROM ( SELECT PROVINCE = ( SELECT YGCSM_SYS_ENUM_ITEM_YGSL.ITEM_TITLE
FROM YGCSM_SYS_ENUM_ITEM_YGSL
WHERE ITEM_ID = TempCU.PROVINCE
),
CUST_TYPE = ( SELECT YGCSM_SYS_ENUM_ITEM.ITEM_TITLE
FROM YGCSM_SYS_ENUM_ITEM
WHERE ITEM_ID = TempCU.CUST_LEVEL
),
SUmss=1
FROM ( ( SELECT DISTINCT
Customer.CUST_NO,
Customer.CUST_NAME,
Customer.PROVINCE,
Customer.CUST_TYPE1,
Customer.CUST_TYPE2,
Customer.CUST_LEVEL
FROM YGCSM_SYS_CUSTOMER_CURR Customer
INNER JOIN dbo.YGCSM_SYS_CUST_TO_ORG_CURR B ON Customer.CUST_NO = B.CUST_NO
INNER JOIN ( SELECT EP_QX_USER_TO_ORG.USERID,
EP_QX_USER_TO_ORG.ORGID
FROM EP_QX_USER_TO_ORG
WHERE EP_QX_USER_TO_ORG.USERID = 610
) AS DeptSql ON B.ORG_ID = DeptSql.OrgId
AND Customer.AUDIT_STATE = 1
AND Customer.is_Stop = 0
)
) as TempCU
) AS TempP
GROUP BY PROVINCE
- 查询中使用列小计
- EXCEL 公式使用小计 生成sql 语句 判断某一数据是否在另一列中出现
- GREENPLUM中使用sql查询表的列信息
- SAP ABAP在alv grid中使用subtotal小计数据
- T-Sql查询小计总结
- Sql分组合计小计查询
- sql 查询数据小计 合计
- glib中GTrashStack小计
- TortoiseGit GitHub 使用小计
- vollery的使用小计
- VMProtect使用小计【一】
- TokuMX使用小计
- sqoop 使用小计
- CMake使用小计
- jquery使用心得小计
- HIVE使用小计
- SVN 使用小计
- MARKDOWN使用小计
- 客户端不更新,或者更新失败的解决方法
- 友坚科技提供全球最低价最高性价比开发板idea6410
- java读取文件输出流出现的问题
- s3c2410/s3c2440对nandflash的读写操作
- Xerces for C++ Using Visual C++, Part 2(转)
- 查询中使用列小计
- 对于JAVA和.net
- 破解inode客户端
- VB程序求解!!!!望高手支招!!
- oracle学习笔记_触发器
- 解决非Unicode编码的软件多语言版本在日语、韩语环境下的乱码问题
- Linux内核移植和根文件系统制作
- Linux恢复被删除的文件 How To Recover Deleted Files From Your Linux System
- 花易谢,雾易失,梦易逝,云易散。物尤如此,情何以堪?