【问题标题】:How to fetch values using STUFF Function in SQL Server如何在 SQL Server 中使用 STUFF 函数获取值
【发布时间】:2021-09-09 22:07:06
【问题描述】:

我正在使用下面的代码,这给了我不。每月订单数

但我想在每个月的列中填入订单号。

Ord Ref Month Party Name Name of Item
Order 1 Jun Vendor 1 Item A
Order 2 Jun Vendor 1 Item B
Order 3 Jun Vendor 2 Item B
Order 4 Jun Vendor 3 Item C
Order 5 Jul Vendor 4 Item C

我需要的输出

Name of Item Jan Feb Mar Apr May Jun Jul
Item A Order1
Item B Order2, Order 3
Item C Order 4 Order5
SELECT *
FROM (SELECT [Name Of Item], 
       DATENAME(MONTH, OrderDate) [Month],
       Count(1)[Ord Ref]
      FROM Stock_Master_Pur_Ord_Del
      GROUP BY [Name Of Item], 
      DATENAME(MONTH, OrderDate)) AS MontlySalesData
PIVOT(sum([Ord Ref])
    FOR Month IN ([January],[February],[March],[April],[May],
    [June],[July],[August],[September],[October],[November],
    [December]) )AS MNamePivot

【问题讨论】:

  • 请提供一个示例输出数据集并解释您当前查询的问题
  • 查看您的查询Ord Ref 是一个整数,但在您显示的示例数据中,它是一个string
  • 它是一个varchar
  • 我需要的示例是项目 A 在 6 月份有两个订单,所以我需要 Test , Order1,Order2 在 jun 列下例如
  • 目前,它给了我总数或总数。我在六月提出的订单

标签: sql sql-server pivot stuff


【解决方案1】:

较新版本的 SQL Server(我的意思是现在四年)支持string_agg()。您可以使用条件聚合:

select name_of_item,
       string_agg(case when month = 'Jan' then ord_ref end) within group (order by ord_ref) as jan,
       string_agg(case when month = 'Feb' then ord_ref end) within group (order by ord_ref) as feb,
       string_agg(case when month = 'Mar' then ord_ref end) within group (order by ord_ref) as mar,
       string_agg(case when month = 'Apr' then ord_ref end) within group (order by ord_ref) as apr,
       string_agg(case when month = 'May' then ord_ref end) within group (order by ord_ref) as may,
       string_agg(case when month = 'Jun' then ord_ref end) within group (order by ord_ref) as jun,
       string_agg(case when month = 'Jul' then ord_ref end) within group (order by ord_ref) as jul
from Stock_Master_Pur_Ord_Del
group by name_of_item;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2011-08-27
    • 2023-03-29
    相关资源
    最近更新 更多