【问题标题】:Get row values as column names in t-sql在 t-sql 中获取行值作为列名
【发布时间】:2013-08-09 06:32:21
【问题描述】:

我需要在数据网格视图中将行值显示为列名。我想使用 sql select 语句将商店名称放入列中。 (请参考附图)。我希望用户在每列下输入一些值。所以 STORE 1, STORE 2, STORE 3 应该在数据网格视图中显示为列。有谁可以帮我完成这项工作?

在谷歌搜索时,我发现这可以使用 SQL 中的 PIVOT 来完成。但在这张表中,我没有任何聚合列。有什么帮助吗?

结果应该类似于

【问题讨论】:

  • 目前还不清楚所有这些神奇数字的来源,或者逻辑是什么

标签: sql sql-server tsql datagridview


【解决方案1】:

您可能知道您的数据只包含每个透视列的单行,但 SQL Server 必须构建一个可以容纳多行的计划。

因此,使用PIVOT 并仅使用聚合,如果传递单个值,将返回相同的值。 MIN()MAX() 符合该描述(如果您正在处理数字数据,SUM 也是如此)

【讨论】:

  • 您能否给我一个示例查询?
  • @Aruna - 我不知道给定示例数据的预期输出是什么 - 我不确定您希望在 STORE 1STORE 2 列中出现什么数据。
  • 有记录有项目数。假设项目 01 有 20 个数量。所以我希望用户分配商店的数量。记录集如下所示: ItemCode |数量 |商店 1 |商店 2 | 3号店| ...N | 001 | 20 | 10 | 10 002 | 15 | 5 | 5 | 5 |明智的
  • 20 将如何在商店之间分配?有具体的逻辑吗?似乎存储过程会帮助您,将 itemcode 和 storeid 传递给它,并在 sp 内部构建逻辑,并返回数量?
【解决方案2】:

您可以使用动态数据透视的特定功能,并通过项目计数列传递您的查询。

您可以使用下面的链接,该链接为您提供功能并可以轻松显示您的预期输出。

http://forums.asp.net/t/1772644.aspx/1

程序名称:

[dbo].[dynamic_pivot]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-22
    • 2021-09-22
    • 2015-06-21
    • 2022-01-14
    • 1970-01-01
    • 2015-11-09
    • 2013-05-22
    • 2015-12-12
    相关资源
    最近更新 更多