首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我怎么才能把这个转过来

我怎么才能把这个转过来
EN

Stack Overflow用户
提问于 2014-05-25 23:37:47
回答 2查看 62关注 0票数 0

我正试图传递一些信息,但无法解决。请帮帮我。我正在使用2012。我写了这个例子:

代码语言:javascript
运行
复制
CREATE TABLE #temp
(
    Mes varchar(2),
    Qty int,
    Modelo varchar(50)
)
insert into #temp values('01', 11, 'TC')
insert into #temp values('01', 21, 'TC2')
insert into #temp values('01', 22, 'Plus2')
insert into #temp values('02', 12, 'TC')
insert into #temp values('02', 22, 'TC2')
insert into #temp values('02', 32, 'Plus2')
insert into #temp values('03', 13, 'TC')
insert into #temp values('03', 23, 'TC2')
insert into #temp values('03', 33, 'Plus2')

SELECT Modelo, [AAA] as Mes1, [BBB] as Mes2, [CCC] as Mes3
from 
(
    select Mes, Modelo, Qty
    from #temp
) x
PIVOT
(
   SUM(Qty)
   FOR Mes IN([AAA], [BBB], [CCC])
) as p

drop table #temp

其结果是:

代码语言:javascript
运行
复制
 Modelo | Mes1  |  Mes2  |  Mes3
-------------------------------
 Plus2  | NULL  |  NULL  |  NULL
 TC     | NULL  |  NULL  |  NULL
 TC2    | NULL  |  NULL  |  NULL

这里我有两个问题,第一个问题是交叉模型(列中的Modelo)和列中的月份(Mes) (aaa,bbb,ccc)。

第二个问题是如何将月份(Mes)名称直接放在列中,而不使用它作为Mes1等。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-26 05:31:40

您在Mes列中插入('01','02','03')。像'AAA‘、'BBB’和'CCC‘这样的值是无效的,将返回null。因此,您必须按照以下步骤执行您的代码:

代码语言:javascript
运行
复制
CREATE TABLE #temp
(
    Mes varchar(2),
    Qty int,
    Modelo varchar(50)
)
insert into #temp values('01', 11, 'TC')
insert into #temp values('01', 21, 'TC2')
insert into #temp values('01', 22, 'Plus2')
insert into #temp values('02', 12, 'TC')
insert into #temp values('02', 22, 'TC2')
insert into #temp values('02', 32, 'Plus2')
insert into #temp values('03', 13, 'TC')
insert into #temp values('03', 23, 'TC2')
insert into #temp values('03', 33, 'Plus2')

SELECT Modelo, [01] as Mes1, [02] as Mes2, [03] as Mes3
from 
(
    select Mes, Modelo, Qty
    from #temp
) x
PIVOT
(
   SUM(Qty)
   FOR Mes IN([01], [02], [03])
) as p
drop table #temp

它将返回:

代码语言:javascript
运行
复制
Modelo  | Mes1  | Mes2  | Mes3
--------+-------+-------+-----------
Plus2   | 22    | 32    | 33
TC      | 11    | 12    | 13
TC2     | 21    | 22    | 23
票数 1
EN

Stack Overflow用户

发布于 2014-05-26 00:19:30

如果你谈论的是一年中的12个月,你可以这样做:

代码语言:javascript
运行
复制
SELECT 
T1.Modelo
,   MAX(CASE WHEN T1.Mes = '01' THEN T1.Qty ELSE NULL END)      AS [JAN]
,   MAX(CASE WHEN T1.Mes = '02' THEN T1.Qty ELSE NULL END)      AS [FEB]
,   MAX(CASE WHEN T1.Mes = '03' THEN T1.Qty ELSE NULL END)      AS [MAR]
,   MAX(CASE WHEN T1.Mes = '04' THEN T1.Qty ELSE NULL END)      AS [APR]
,   MAX(CASE WHEN T1.Mes = '05' THEN T1.Qty ELSE NULL END)      AS [MAY]
,   MAX(CASE WHEN T1.Mes = '06' THEN T1.Qty ELSE NULL END)      AS [JUN]
,   MAX(CASE WHEN T1.Mes = '07' THEN T1.Qty ELSE NULL END)      AS [JUL]
,   MAX(CASE WHEN T1.Mes = '08' THEN T1.Qty ELSE NULL END)      AS [AGO]
,   MAX(CASE WHEN T1.Mes = '09' THEN T1.Qty ELSE NULL END)      AS [SEP]
,   MAX(CASE WHEN T1.Mes = '10' THEN T1.Qty ELSE NULL END)      AS [OCT]
,   MAX(CASE WHEN T1.Mes = '11' THEN T1.Qty ELSE NULL END)      AS [NOV]
,   MAX(CASE WHEN T1.Mes = '12' THEN T1.Qty ELSE NULL END)      AS [DEC]
FROM #temp T1
GROUP BY T1.Modelo

见工作示例:SQL Fiddle

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23860955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档