【问题标题】:Trying to transpose and create pivot in T-SQL尝试在 T-SQL 中转置和创建枢轴
【发布时间】:2015-11-23 14:38:26
【问题描述】:

我正在努力使用 unpivot 和 pivot 命令,但不能完全正确。 我想使用 Transact SQL 从表 1 转置到表 2:

click here to see my source and destination tables

我怎样才能做到这一点?到目前为止,我得到了这个:

SELECT  CASE RIGHT(name, 1) WHEN  'R' THEN CONVERT(nvarchar(6), Q) + 'R' 
                            WHEN  'D' THEN CONVERT(nvarchar(6), Q) + 'D' 
                            ELSE           CONVERT(nvarchar(6), Q) + 'A' END AS Q1, 
                            value, name
FROM    (SELECT Q, a1VAT, b1VAT, c1VAT, a1VATR, b1VATR, c1VATR, a1VATD, b1VATD, c1VATD
            FROM vw_VAT) src 
            unpivot (value FOR name IN (a1VAT, b1VAT, c1VAT, a1VATR, b1VATR, c1VATR, a1VATD, b1VATD, c1VATD)) sel
            pivot ???

但是我无法正确使用 pivot 命令。 有人可以帮帮我吗?

BR,emphyrio

【问题讨论】:

  • 请至少以文本而不是图片的形式创建您的示例,如果您需要更快的帮助,请在 SQL Fiddle 中创建一个示例。
  • 我自己解决了这个难题,使用这个 T-SQL:

标签: sql-server pivot transpose unpivot


【解决方案1】:

我自己解决了这个难题,使用这个 T-SQL:

SELECT * FROM (
SELECT  CASE RIGHT(name, 1) WHEN  'R' THEN CONVERT(nvarchar(6), Q) + 'R' 
                            WHEN  'D' THEN CONVERT(nvarchar(6), Q) + 'D' 
                            ELSE           CONVERT(nvarchar(6), Q) + 'A' END AS Q1,
        CASE RIGHT(name, 1) WHEN  'R' THEN LEFT(name, LEN(name) -1) 
                            WHEN  'D' THEN LEFT(name, LEN(name) -1) 
                            ELSE           name END AS name,  
                            value                               
FROM    (SELECT Q, a1VAT, b1VAT, c1VAT, a1VATR, b1VATR, c1VATR, a1VATD, b1VATD, c1VATD
            FROM vw_VAT) src 
            unpivot (value FOR name IN (a1VAT, b1VAT, c1VAT, a1VATR, b1VATR, c1VATR, a1VATD, b1VATD, c1VATD)) up) main
            pivot (SUM(value) FOR Q1 IN ([201501A], [201502A], [201503A], [201504A], [201501R], [201502R], [201503R], [201504R], [201501D], [201502D], [201503D], [201504D])) piv

现在唯一剩下的就是动态地改变 pivot 命令的 IN 子句。但这很容易,现在我找到了解决方案。

Emphyrio。

【讨论】:

    猜你喜欢
    • 2011-04-26
    • 2017-01-01
    • 2011-02-24
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2017-12-12
    相关资源
    最近更新 更多