简体   繁体   English

一列数据变成多列

[英]One column data into multiple column

I am using SQL Server and I want to data according to posid in each column here is my code:我正在使用 SQL Server,我想根据每列中的posid数据,这是我的代码:

select ItcodedGrp,ItheadCat, ItheadCls,ItheadGrp,POsid,
(sum(OpnQty) + sum(FaultyQty) + sum(UsedQty) +  sum(RecQty) - sum(RejectQty)  - sum(Issued) + 
sum(DebitQty) + sum(AdjQty) + sum(STNQtyPls) - sum(STNQtyMin) - sum(POSQTY) - sum(TransitQty) - sum(FQtyMin)
+ sum(FQtyPlus) + sum(ReplaceQty)) as AllStock
from Vmgt_RSales_Stock
where POsid in   (2,6,7,10,11,12,13,14) and ItcodedGrp  like '28.01.059.%'
group by ItcodedGrp,ItheadCat, ItheadCls,ItheadGrp,POsid 
order by POsid asc

and here is my result.这是我的结果。

I want the stock according to posid in each column我想要根据每列中的posid的库存

分离柱中的 pos wise 库存

as you can see in above image my stock is showing in front of posid but I want the all stock in column but posid wise like let me give you an example the how my result should be like the below正如您在上图中所看到的,我的股票显示在posid前面,但我想要列中的所有股票,但posid明智的,例如让我举个例子,我的结果应该如何如下所示

请看下面

You can use conditional aggregation.您可以使用条件聚合。 Your sum() expression is lenghty so I would add one level of aggregation to avoid repeating it many times:您的sum()表达式很长,所以我会添加一层聚合以避免多次重复:

select
    ItcodedGrp,
    ItheadCat, 
    ItheadCls,
    ItheadGrp,
    sum(AllStock) AllStock,
    sum(case when POSid = 2  then AllStock end) POSid2,
    sum(case when POSid = 6  then AllStock end) POSid6,
    sum(case when POSid = 7  then AllStock end) POSid7,
    sum(case when POSid = 10 then AllStock end) POSid10,
    sum(case when POSid = 11 then AllStock end) POSid11,
    sum(case when POSid = 12 then AllStock end) POSid12,
    sum(case when POSid = 13 then AllStock end) POSid13,
    sum(case when POSid = 14 then AllStock end) POSid14
from (
    select 
        ItcodedGrp,
        ItheadCat, 
        ItheadCls,
        ItheadGrp,
        POsid,
        (
            sum(OpnQty) 
            + sum(FaultyQty) 
            + sum(UsedQty) 
            +  sum(RecQty) 
            - sum(RejectQty)  
            - sum(Issued) 
            + sum(DebitQty) 
            + sum(AdjQty) 
            + sum(STNQtyPls) 
            - sum(STNQtyMin) 
            - sum(POSQTY) 
            - sum(TransitQty) 
            - sum(FQtyMin)
            + sum(FQtyPlus) 
            + sum(ReplaceQty)
        ) as AllStock
    from Vmgt_RSales_Stock
    where 
        POsid in (2,6,7,10,11,12,13,14) 
        and ItcodedGrp  like '28.01.059.%'
    group by 
        ItcodedGrp,
        ItheadCat, 
        ItheadCls,
        ItheadGrp,
        POsid 
    ) t
group by 
    tcodedGrp,
    ItheadCat, 
    ItheadCls,
    ItheadGrp

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM