数据库几个表关联后有表A:
字段有:
工资类型、是否固定工、是否超过十年工、应发工资
数据有:
计时、是、是、3000
计件、是、否、4000
年薪、否、否、4000
计件、否、否、3000
我用:
- SQL code
SELECT SUM(CASE WHEN 工资类型='年薪' THEN 1 ELSE 0 END) nxzQTY,SUM(CASE WHEN 工资类型='计时' THEN 1 ELSE 0 END) jsQTY,SUM(CASE WHEN 工资类型='计件' THEN 1 ELSE 0 END) jjQTY,SUM(CASE WHEN ISNULL(是否固定工,0)=1 THEN 1 ELSE 0 END) gdgQTY,SUM(CASE WHEN ISNULL(是否超过十年工,0)=1 THEN 1 ELSE 0 END) up10QTY
以上能够取出人数,但我想取每个工资类型的最大、最小,是否固定工的最大、最小,超过十年工的最大最小,加在后面用MIN\MAX取不出,特此请教高手一下。
------解决方案--------------------
- SQL code
with tb1 as( select '计时' as 工资类型,'是' as 是否固定工,'是' as 是否超过十年工,3000 as 应发工资 union all select '计件','是','否',4000 union all select '年薪','否','否',4000 union all select '计件','否','否',3000) select distinct *, sum(CASE WHEN 工资类型='年薪' THEN 1 ELSE 0 END) over() as 年薪人数, sum(CASE WHEN 工资类型='计时' THEN 1 ELSE 0 END) over() as 计时人数, sum(CASE WHEN 工资类型='计件' THEN 1 ELSE 0 END) over() as 计件人数, sum(CASE WHEN ISNULL(是否固定工,'否')='是' THEN 1 ELSE 0 END) over() 是否固定工人数, sum(CASE WHEN ISNULL(是否超过十年工,'否')='是' THEN 1 ELSE 0 END) over() as 是否超过十年工人数, MAX(应发工资) over(partition by 工资类型) as max_工资类型, MIN(应发工资) over(partition by 工资类型) as min_工资类型, MAX(应发工资) over(partition by 是否固定工) as max_工资类型, MIN(应发工资) over(partition by 是否固定工) as min_工资类型, MAX(应发工资) over(partition by 是否超过十年工) as max_工资类型, MIN(应发工资) over(partition by 是否超过十年工) as min_工资类型 from tb1/*工资类型 是否固定工 是否超过十年工 应发工资 年薪人数 计时人数 计件人数 是否固定工人数 是否超过十年工人数 max_工资类型 min_工资类型 max_工资类型 min_工资类型 max_工资类型 min_工资类型---- ----- ------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------计件 否 否 3000 1 1 2 2 1 4000 3000 4000 3000 4000 3000计件 是 否 4000 1 1 2 2 1 4000 3000 4000 3000 4000 3000计时 是 是 3000 1 1 2 2 1 3000 3000 4000 3000 3000 3000年薪 否 否 4000 1 1 2 2 1 4000 4000 4000 3000 4000 3000(4 row(s) affected)*/
代码迷推荐解决方案:软件开发者薪资,http://www.daimami.com/other/1391128.html