【问题标题】:How to convert each row of the first column as a header and second as a row?如何将第一列的每一行转换为标题,将第二列转换为行?
【发布时间】:2017-06-21 19:06:51
【问题描述】:

我想要一个 SQL 查询,它将第一列的每一行转换为标题,将第二列转换为一行,那么我们如何使用 SQL 来做到这一点。下面是一个示例:

在我的表记录中像

    FieldName   Value   link
-----------------------------
    Country     India     1
    Country     USA       2
    Country     Russia    3
    Amount      10000     1
    Amount      20000     2
    Amount      30000     3

结果应该是:

Country Amount
---------------
India   10000
USA     20000
Russia  30000

如果有人有想法,请告诉我。 提前致谢。

【问题讨论】:

  • 你怎么知道哪个Amount属于哪个国家?
  • @Martin Smith 我们现在可以考虑第一名..第二名,我正在使用 SQL Server。
  • 关系数据库中没有“第一”。如果您没有将行链接在一起的其他列,那么您就不走运了。
  • 我们可以假设第一个国家有数量,第二个国家有第二个这样的数量..
  • 我认为你没有抓住重点。根据定义,表是无序集。顺序的概念是在数据检索期间。您需要有一些东西可以用来对行进行排序。

标签: sql asp.net sql-server c#-4.0


【解决方案1】:

您可以使用 (demo)

SELECT MAX(CASE WHEN FieldName = 'Country' THEN Value END) AS Country,
       MAX(CASE WHEN FieldName = 'Amount' THEN Value END) AS Amount
FROM YourTable
GROUP BY link

【讨论】:

  • 它只会给出具有最大值的行:Country Amount USA 3000000
  • @User125 - 它可以提供您想要的结果。见演示链接。预计(link, FieldName) 将是唯一的。
  • 演示链接在哪里?
  • 我的回答中“demo”这个词的链接
【解决方案2】:

或者

select a.Value, b.Value
from (select Fieldname, Value, link from theTable) as a
    inner join (select Fieldname, Value, link from theTable) as b on a.link = b.link
where
    a.FieldName > b.FieldName;

【讨论】:

  • 嗨,伙计,它不工作..意味着没有提供所需的输出..谢谢
猜你喜欢
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 2019-04-11
  • 2019-06-24
  • 2020-03-08
相关资源
最近更新 更多