2016-09-21 101 views
1
iItemKey Qty FreeQty Unit TaxCatKey TaxVal 
    7  1 1  1  1  4.00 
    7  1 1  1  1  1.00 

我需要输出SQL查询枢轴转动为值

iItemKey Qty FreeQty Unit TaxCatKey VAT A.VAt 
    7  1 1  1  1  4.00 1.00 

这里是我的查询。但我得到的增值税和A.Vat值作为空

WITH T 
    AS (SELECT  T_ItemRequestSub.iItemKey, T_ItemRequestSub.Qty, T_ItemRequestSub.FreeQty, T_ItemRequestSub.Unit, T_ItemRequestSub.TaxType, 
        M_Mt_TaxCategorySub.iTaxCatKey , M_Mt_TaxCategorySub.iTaxVal 
FROM   T_ItemRequestSub INNER JOIN 
         T_ItemRequest ON T_ItemRequestSub.iReqKey = T_ItemRequest.iKey INNER JOIN 
         M_Mt_TaxCategory ON T_ItemRequestSub.TaxType = M_Mt_TaxCategory.iKey INNER JOIN 
         M_Mt_TaxCategorySub ON M_Mt_TaxCategory.iKey = M_Mt_TaxCategorySub.iTaxCatKey where T_ItemRequestSub.iKey = 2) 
SELECT * 
FROM T PIVOT (sum (iTaxVal) FOR TaxType IN ( 
     [Vat], 
     [A.Vat] 
    )) AS pvt 

请帮助

+0

你能解释一下输出背后的逻辑? –

+0

如果您的输入中有3行,该怎么办? – p2k

回答

0

唯一不同的值是TaxVal所以我怀疑你正在尝试做以下:

WITH Src AS --Your source table 
(
    SELECT * FROM (VALUES 
    (7, 1, 1, 1, 1, 4.00), 
    (7, 1, 1, 1, 1, 1.00) 
    )T(iItemKey, Qty, FreeQty, Unit, TaxCatKey, TaxVal) 
) 
SELECT * FROM 
(
    SELECT iItemKey, Qty, FreeQty, Unit, TaxCatKey, TaxVal, CASE WHEN TaxVal = 1.00 THEN 'VAT' ELSE 'A.VAT' END Col 
    FROM Src 
) T 
PIVOT (MAX(TaxVal) FOR Col IN ([VAT], [A.VAT])) P 
+0

其工作亚尔 – Edburg