请教一个SQLSERVER中一列数据根据条件拆分为多列的方法 20

数据表HTIDMEMOTYPEA0001AAA1A0001BBB1A0001CCC1A0001DDD2A0001EEE3A0001FFF3想要的结果是ID说明1说明2说明... 数据表HT
ID MEMO TYPE
A0001 AAA 1
A0001 BBB 1
A0001 CCC 1
A0001 DDD 2
A0001 EEE 3
A0001 FFF 3

想要的结果是
ID 说明1 说明2 说明3
A0001 AAA DDD EEE
A0001 BBB FFF
A0001 CCC
展开
 我来答
freeze涓垛湪
2019-10-21
知道答主
回答量:38
采纳率:0%
帮助的人:2.3万
展开全部

有点多,你可能不想看,但是你自己整理一下 弄视图也可以


SELECT PEAppM0b02,COUNT([COUNT])[COUNT],CourseName,COUNT(A)A,COUNT(B)B,COUNT(C)C,COUNT(D)D FROM (

SELECT PEAppM0b02,COUNT([COUNT])[COUNT],CourseName,

CASE PEAppM0b162 

WHEN '一等奖' THEN PEAppM0b162 END A,

CASE PEAppM0b162

WHEN '二等奖' THEN PEAppM0b162 END B,

CASE PEAppM0b162

WHEN '三等奖' THEN PEAppM0b162 END C,

CASE ISNULL(PEAppM0b162,'')

WHEN '无奖项' THEN PEAppM0b162 END D

FROM 

(

SELECT * FROM 

(SELECT PEAppM0b02,COUNT(PEAppM0b162)[COUNT],CourseName,PEAppM0b162 

FROM PEAppM002Paper where PEAppM0b162='一等奖' GROUP BY PEAppM0b02,CourseName,PEAppM0b162) A

UNION

(SELECT PEAppM0b02,COUNT(PEAppM0b162)[COUNT],CourseName,PEAppM0b162 

FROM PEAppM002Paper where PEAppM0b162='二等奖' GROUP BY PEAppM0b02,CourseName,PEAppM0b162)

UNION

(SELECT PEAppM0b02,COUNT(PEAppM0b162)[COUNT],CourseName,PEAppM0b162 

FROM PEAppM002Paper where PEAppM0b162='三等奖' GROUP BY PEAppM0b02,CourseName,PEAppM0b162)

UNION

(SELECT PEAppM0b02,COUNT(PEAppM0b162)[COUNT],CourseName,PEAppM0b162 

FROM PEAppM002Paper where (PEAppM0b162='无奖项' OR ISNULL(PEAppM0b162,'')='无奖项') GROUP BY PEAppM0b02,CourseName,PEAppM0b162)

)TB

GROUP BY PEAppM0b02,CourseName,PEAppM0b162

)AS TAB

WHERE PEAppM0b02='164'

GROUP BY PEAppM0b02,CourseName

原格式:

修改结果后

--学科----总人数----一等奖人数---二等奖人数-----三等奖人数----无奖项人数-----

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-04-02
展开全部
SQL 代码如下所示:
1、
select
max(case when F1%3=1 then F1 else 0 end) a,
max(case when F1%3=2 then F1 else 0 end) b,
max(case when F1%3=0 then F1 else 0 end) c
from HLR151
group by (F1-1)/3
效果:

2、
select
c1=a.F1,c2=b.F1,c3=c.F1
from HLR151 a
left join HLR151 b on b.F1=a.F1+1
left join HLR151 c on c.F1=a.F1+2
where (a.F1-1)%3=0
效果:

3、
select
max(case when (F1-1)/8=0 then F1 else 0 end) a,
max(case when (F1-1)/8=1 then F1 else 0 end) b,
max(case when (F1-1)/8=2 then F1 else 0 end) c
from HLR151
group by (F1-1)%8
追问
你这个我刚在网站上都查到过,这个是通过数字计算的,你复制到这来有用吗?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式