当前位置: 首页 > 面试题库 >

SQL转换交叉表数据透视表

周和志
2023-03-14
问题内容

我正在使用SQL Server 2008,并且希望将数据转换为:

资料集:

ID   Item  Columns  Result
1     1      X       A
2     1      Y       B
3     1      Z       C
4     2      X       D
5     2      Y       E
6     2      Z      NULL
7     3      X       F
8     3      Y       G
9     3      Z       H

所需结果:

Item   X   Y   Z
 1     A   B   C
 2     D   E  NULL
 3     F   G   H

目前,我正在执行以下操作,然后将所需的列粘贴到Excel中:

Select * from thisTable where Column=X
Select * from thisTable where Column=Y
Select * from thisTable where Column=Z

但是,并非所有匹配的行都不能仅仅并排击打表。对于没有Result的列,我希望显示NULL来填充行以使它们都具有相同数量的记录。

我查了一下PIVOT,但我认为这在这里不起作用…这种数据转换称为什么类型?我不认为这是交叉表…

谢谢!


问题答案:

您可以使用条件聚合来执行交叉表:

SELECT
    Item,
    [X] = MAX(CASE WHEN [Columns] = 'X' THEN Result END),
    [Y] = MAX(CASE WHEN [Columns] = 'Y' THEN Result END),
    [Z] = MAX(CASE WHEN [Columns] = 'Z' THEN Result END)
FROM thisTable
GROUP BY Item


 类似资料:
  • 问题内容: 问题1: 我有一个具有以下结构和数据的表: 我想以以下格式显示这些记录: 我知道我需要使用交叉表/数据透视查询来获得此显示。为此,我基于对它的有限知识对其进行了尝试。以下是我的查询: 根据此查询,我得到以下显示: 任何人都可以帮助我对查询进行适当的更改以获取单行而不是如上所述的多行记录。 问题2: 还有一种方法可以获取特定字段的值作为列的名称。正如你可以在上面看到我有,,…作为标题。取

  • 问题内容: 我在使用该函数在PostgreSQL中创建数据透视表时遇到问题。它运作良好,但可以产生多个记录。如何避免这种情况? 这是SQL: //编辑 Thx to Erwin现在可以使用了,但是我试图在没有内置函数的情况下做到这一点,但是没有运气。有人可以提出建议吗?我的代码只有两年了: 问题答案: 您需要相应地进行第一个查询。我在这里使用简化的语法 。 该函数未包含在标准PostgreSQL中

  • 问题内容: 我有一个产生以下结果集的视图: 我需要将其转换为: 我只使用交叉表使用列,就知道该怎么做。如何在目标结果集中使用和产生新列?如果我只是在查询中添加列,它会抱怨“无效的源数据SQL语句”。 我正在使用PostgreSQL 9.3.6。 问题答案: 一种方法是使用复合类型: 或者,为临时使用(在会话期间注册类型): 然后,根据需要运行交叉表并分解复合类型: 所有括号都是 必需的 ! 基础知

  • 问题内容: 我在SQL Server中的数据格式如下。 我需要的是能够以以下格式显示数据。 是否有可能做到这一点?我在SQL Server中尝试了数据透视,但是它仅返回一条记录。有人可以帮忙吗? 问题答案: 您可以使用PIVOT函数获取结果,我只需将windowing函数应用于数据,以便可以为每个返回多个行: 请参阅带有演示的SQL Fiddle。 您还可以将聚合函数与CASE表达式一起使用以获取

  • 问题内容: 我已经尽力理解如何在SQL中创建数据透视表,但是我无法对其进行管理! 我有以下几列: 拥有60万行数据。 我在下面的数据透视表中需要它们; StartHour作为列标题 作为行标题 作为数据 其中=‘1’作为过滤器。 数据透视表 我设法获得了以下代码,该方法有效,但仅给我date_1作为列标题,而不给我StartHour,或者将filter作为date_source =‘1’。 谢谢你

  • 问题内容: 我正在使用Oracle 12c R1 db并具有以下示例数据的示例视图: 视图名称: CUST_HOTEL_VIEW 从上面的数据中,我试图通过Row Grand Total,Column Grand Total和每位客户预订的酒店数量低于数据透视表的输出: 我尝试在下面的查询中生成数据透视表 我想知道: 1.如何包括行总计 2.如何包括列总计 3.如何包括预订酒店的数量以及 3.是否