解决方案 »
- 数据库系统原理 问题
- 本表和本表进行join查询,有没有更好的办法,谢谢大家帮我看看有没有好办法!
- 请教一个sql 语句的写法
- 如何将日期格式转换为英文格式
- 客户端连SQL数据库服务器问题
- SQL SERVER2000的数据如何转到MYSQL里?从2000转到2005需要变动吗?
- 请教高手,遇到一个有点难度的SQL语句,怎样才能把一列数据变成多列数据呢?
- 添加数据
- sql server 长时间update后 update出现time out !!!!!!数据库高人指点啊!!!!!两个帖子一起给分啊!!!
- 看看这个有什么比较好的算法
- 跨数据库同步数据的问题 求大神指点
- SQL高手请进,很需要你的帮忙,谢谢啦
@行业倒是可以,因为涉及到的是列名,要么写死要么动态执行,以下写死
SELECT 员工名,熟悉客户1,熟悉客户2,熟悉客户3,工作年数,电子行业工作年数,机械行业工作年数,纺织行业工作年数
FROM(
SELECT 员工名,熟悉客户1,熟悉客户2,熟悉客户3,工作年数,电子行业工作年数,机械行业工作年数,纺织行业工作年数
,COUNT(员工名)OVER(PARTITION BY 熟悉客户1)C1
,COUNT(员工名)OVER(PARTITION BY 熟悉客户2)C2
,COUNT(员工名)OVER(PARTITION BY 熟悉客户3)C3
FROM TB
)T
ORDER BY CASE WHEN C1>1 THEN 0 WHEN C2>1 THEN 1 WHEN C3>1 THEN 2 ELSE 3 END
,CASE WHEN C1>1 THEN C1 WHEN C2>1 THEN C2 WHEN C3>1 THEN C3 ELSE 0 END DESC
,CASE WHEN C1>1 THEN 熟悉客户1 WHEN C2>1 THEN 熟悉客户2 WHEN C3>1 THEN 熟悉客户3 ELSE '' END
,CASE @行业 WHEN '电子' THEN 电子行业工作年数
WHEN '机械' THEN 机械行业工作年数
WHEN '纺织' THEN 纺织行业工作年数 END DESC
,电子行业工作年数 DESC,工作年数 DESC
SET @行业='电子'
SET @客户='客户2'
SELECT 员工名,熟悉客户1,熟悉客户2,熟悉客户3,工作年数,电子行业工作年数,机械行业工作年数,纺织行业工作年数
FROM(
SELECT 员工名,熟悉客户1,熟悉客户2,熟悉客户3,工作年数,电子行业工作年数,机械行业工作年数,纺织行业工作年数
,COUNT(员工名)OVER(PARTITION BY 熟悉客户1)C1
,COUNT(员工名)OVER(PARTITION BY 熟悉客户2)C2
,COUNT(员工名)OVER(PARTITION BY 熟悉客户3)C3
FROM TB
)T
ORDER BY CASE WHEN 熟悉客户1=@客户 THEN 0 ELSE 1 END
,CASE WHEN 熟悉客户2=@客户 THEN 0 ELSE 1 END
,CASE WHEN 熟悉客户3=@客户 THEN 0 ELSE 1 END
,CASE @行业 WHEN '电子' THEN 电子行业工作年数
WHEN '机械' THEN 机械行业工作年数
WHEN '纺织' THEN 纺织行业工作年数 END DESC
,电子行业工作年数 DESC,工作年数 DESC
FROM TB
ORDER BY CASE WHEN 熟悉客户1=@客户 THEN 0 ELSE 1 END
,CASE WHEN 熟悉客户2=@客户 THEN 0 ELSE 1 END
,CASE WHEN 熟悉客户3=@客户 THEN 0 ELSE 1 END
,CASE @行业 WHEN '电子' THEN 电子行业工作年数
WHEN '机械' THEN 机械行业工作年数
WHEN '纺织' THEN 纺织行业工作年数 END DESC
,电子行业工作年数 DESC,工作年数 DESC更正一下