首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >枢轴表中的evit双面性

枢轴表中的evit双面性
EN

Stack Overflow用户
提问于 2016-11-24 10:59:53
回答 1查看 76关注 0票数 0

我创建了一个T代码来接收如下数据:

但是,当数据位于不同的列(COL1、COL2、COL3、COL5、.)时,这会导致CODART和NOMBRE的双重性。

我想把所有的数据都排在一排,如下所示:

这是我的密码:

代码语言:javascript
复制
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'
SELECT *
FROM
(
  SELECT sum(CUENTA) [cuenta], CODIGO,(select max(ar.nombre) from 
CON.dbo.ARTICULOS ar where ar.codart=a.Codigo) as NOMBRE,
  COL from LIBRO_COLUMNA l group by COL,CODIGO,
) AS j
PIVOT
(
  SUM(cuenta) FOR COL IN('+@columns+')
) AS pivottable ORDER BY CODIGO;';
--PRINT @sql;
exec sp_executesql @sql

表的结构和一些数据:

代码语言:javascript
复制
COL        codigo           nombre                     Cuenta

*--------------------------------------------------------------------

COL5     |  PHOBA802   |    TAPA FINAL D-UT 2,5/10   |  3624.00

COL 5    |  PHOBA8021  |    TAPA FINAL D-UT 16       |  159.00

COL 5    |  PHOBA803   |    TAPA FINAL D-UT 2,5/4    |  1950.00

COL 10   |  PHOBA803   |                             |  447.00

COL 1    |  PHOBA803   |    TAPA UT 2,5-4            |  138.00

这里的问题是,如果想要使用COL,我需要按CODIGO和COL进行分组,而且我不知道两个不按COL分组的方法。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-24 13:00:38

像这样的怎么样?

代码语言:javascript
复制
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'
SELECT
    subquery.*
    , (select max(ar.nombre) from 
CON.dbo.ARTICULOS ar where ar.codart=subquery.Codigo) as NOMBRE
FROM
(
SELECT *
FROM
(
  SELECT sum(CUENTA) [cuenta],
  COL from LIBRO_COLUMNA l group by COL,CODIGO
) AS j
PIVOT
(
  SUM(cuenta) FOR COL IN('+@columns+')
) AS pivottable

) subquery ORDER BY subquery.CODIGO;
';
--PRINT @sql;
exec sp_executesql @sql

-后来加上

更多关于原因的解释。

在文本的text基础和一个为70-461考试做准备的时候,Itzik解释了支点.

代码语言:javascript
复制
SELECT <select list>
FROM (
    SELECT
        <grouping column>
        , <spreading column>
        , <aggregating column>
    ) PIVOT ( <aggregate function> (<aggregation column>)
        FOR <spreading column> IN (<spreading values>) ) as P;

根据我对他写作的理解,在(选择最大.)行,您在其中添加了一个分组列(将分组作为.按分组列、展开列分组)。

在这种情况下,我移动了(选择max.)从正在旋转的表中划出一行,从而删除重复。

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

https://stackoverflow.com/questions/40784667

复制
相关文章

相似问题

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