【问题标题】:How to order month abbreviation and year in SQL, format : MMMYYYY如何在 SQL 中排序月份缩写和年份,格式:MMMYYYY
【发布时间】:2021-08-03 04:19:51
【问题描述】:

我使用 XML 数据透视表将月份列转换为标题,并希望将其从最早的月份排序到当前月份,有人知道该怎么做吗?

代码如下:

DECLARE @cols AS NVARCHAR(MAX),
        @query AS NVARCHAR(MAX)

SELECT @cols  = STUFF((SELECT DISTINCT ','+ QUOTENAME(period_month) FROM  updated_order_raw_data
         FOR XML Path(''), TYPE).value('.','NVARCHAR(MAX)'),1,1,'')

-- the purpose of temp-table is for summarize the total
CREATE TABLE #temp_table (
        order_id varchar(max),
        total_amount numeric
        )
INSERT INTO #temp_table

SELECT order_id, SUM(amount) as total_amount FROM updated_order_raw_data GROUP BY order_id

SET @query = 'SELECT * from 
             (
                SELECT a.order_id, report_name, period_month, amount, b.total_amount as difference
                FROM updated_order_raw_data a
                LEFT JOIN #temp_table b
                on a.order_id = b.order_id
                ) Src
            PIVOT
            (
                SUM(amount)
                FOR period_month IN  (' + @cols + ')
            ) Piv 
            WHERE difference <> 0
            ORDER BY order_id, report_name '

EXECUTE(@query)
-- Drop temp-table
DROP TABLE #temp_table

【问题讨论】:

  • 您可以发送您的查询吗?
  • @TashilMoorateeah 我在上下文中添加了代码。
  • 根据问题指南,请不要发布代码、数据、错误消息等的图像 - 将文本复制或键入问题中。请保留将图像用于图表或演示渲染错误,无法通过文本准确描述的事情。
  • @DaleK 感谢您的提醒,我会记住的。
  • 定义@cols时可以下单

标签: sql sql-server tsql sql-order-by


【解决方案1】:

感谢塔希尔·穆拉蒂亚,

我在这里添加了订单,它是可行的。

SELECT @cols  = STUFF((SELECT DISTINCT ','+ QUOTENAME(period_month) AS [period_month] FROM  updated_order_raw_data ORDER BY [period_month] 
         FOR XML Path(''), TYPE).value('.','NVARCHAR(MAX)'),1,1,'') 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多