1

我有一张这样的桌子

我有一张这样的桌子

我正在尝试实现这样的表格: 在此处输入图像描述

这是我的查询。

select name,token , sum(qty) [Qty],sum(amount)from #temp 
 group by token,name

试过这样..

 SELECT *
 FROM   (SELECT  name,
               qty,amt,
               Token
               FROM   #temp1
       ) AS D
       PIVOT(Sum(amt)
            FOR Token IN ([10],[20],[100],[40],[5])) AS P 

但它不起作用。任何帮助将不胜感激。

4

1 回答 1

2

我认为您可以通过以下语句实现它:

SELECT 
    [Name],
    SUM((CASE WHEN [Token] = 10 THEN [QTY] ELSE 0 END)) AS Token_10_QTY,
    SUM((CASE WHEN [Token] = 10 THEN [amt] ELSE 0 END)) AS Token_10_amt,
    SUM((CASE WHEN [Token] = 50 THEN [QTY] ELSE 0 END)) AS Token_50_QTY,
    SUM((CASE WHEN [Token] = 50 THEN [amt] ELSE 0 END)) AS Token_50_amt,
    SUM((CASE WHEN [Token] = 100 THEN [QTY] ELSE 0 END)) AS Token_100_QTY,
    SUM((CASE WHEN [Token] = 100 THEN [amt] ELSE 0 END)) AS Token_100_amt
FROM 
    #temp1
GROUP BY
    [Name]

假设您的列QTYamtNOT NULL。我希望它能以某种方式帮助你。

于 2014-12-16T07:51:42.717 回答