【问题标题】:How to Pivot with Columns in SQL SSRS如何在 SQL SSRS 中使用列进行透视
【发布时间】:2020-05-26 04:40:25
【问题描述】:

您是否知道我的脚本是否缺少任何其他内容,我正在尝试对表“Pay_Details”进行旋转,并在列行上设置月份,并在行上设置年份。我已经尝试了以下方法,并且我的脚本代码已发布。

我收到以下错误:Msg 156, Level 15, State 1, Line 15 关键字“SELECT”附近的语法不正确。 消息 102,第 15 级,状态 1,第 22 行 ')' 附近的语法不正确。

我的输出应该如下所示:

Year     January     February    March
2019     150         120         230
2018     100         200         300
2017     90          110         120

[脚本代码]:

SELECT Server,
    DATEPART(year, date) [year], 
    DATEPART(quarter, date) [quarter], 
    DATEPART(month, date) [month], 
    DATEPART(day, date) [day],
    Payee,
    Amount

FROM   [dbo].[Pay_Details]

    (SELECT    DATEPART(year, date) [year], 
   DATEPART(quarter, date) [quarter], 
   DATEPART(month, date) [month], 
   DATEPART(day, date) [day],
   Payee,
   Amount

    ) p PIVOT ( MAX([Amount])
                FOR ColName IN ( DATEPART(year, date) [year], 
   DATEPART(quarter, date) [quarter], 
   DATEPART(month, date) [month], 
   DATEPART(day, date) [day],
   Payee,
   Amount

) ) AS pvt
ORDER BY [year] DESC, 
         [quarter], 
         [month], 
         [day]

【问题讨论】:

    标签: sql reporting-services sql-server-2005


    【解决方案1】:

    在您使用别名的数据透视表中,您需要使用文字。这意味着你要么

    一个。需要事先知道你想要的列的名称(不太可能因为数据会改变)

    b.使用动态 sql 构建数据透视语句。有很多关于如何在 SO 上执行此操作的示例。

    但是,当您尝试在 SSRS 中获取报告时,无需执行任何此操作。如果您在报表上使用 Matrix 控件,它会为您执行透视。

    这是一个快速(凭记忆)指南。

    创建一个新报告并添加一个新数据集。将此数据集的查询设置为类似

    SELECT    DATEPART(year, date) [year], 
       DATEPART(quarter, date) [quarter], 
       DATEPART(month, date) [month], 
       DATENAME(month, date) [monthName], 
       DATEPART(day, date) [day],
       Payee,
       Amount
    FROM Pay_Details
    

    注意:在此示例中,我们实际上不需要收款人、季度和日期列,但您可以扩展它以包含您喜欢的它们。 我还添加了 monthName

    现在向报表设计图面添加一个矩阵。您将创建一个 2x2 表格,其中包含“列”、“行”和“数据”的占位符

    [year] 字段从数据集中拖到“行”上,将[month] 拖到“列”,最后将[amount] 拖到“数据”

    就是这样(差不多)

    运行报告,您会看到数据已被透视。唯一的问题是您的月份列显示月份编号,要解决此问题,请单击包含月份编号的单元格并从列表中选择[monthName]。列仍将按数字排序,因为排序由列组属性确定。

    【讨论】:

      猜你喜欢
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      相关资源
      最近更新 更多