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

SQL行到列(仅位值的数据透视)

逑俊楚
2023-03-14
问题内容

我试图将结果行转换为列,但仅使用位值。为了更好地解释我的意思,我的桌子看起来像这样;

Id    Item
-------------------
1     TextLineA
1     TextLineB
2     TextLineA

我想要实现的是这样的布局;

Id TextLineA  TextLineB
--------------------------
1     True       True
2     True       False

抱歉我的格式不正确,但希望它能传达我想要的内容。我已经尝试过Pivot,但是我没有什么可总结的,因为我只想要true / false值而不是总和。

另外,我大约有15列,我不介意静态地将它们写出来。任何指针将不胜感激!


问题答案:

这种方法将解决此问题:

DECLARE @Example TABLE (Id int, Item varchar(20))

INSERT INTO @Example (ID, Item)
SELECT 1, 'TextLineA' UNION ALL
SELECT 1, 'TextLineB' UNION ALL
SELECT 2, 'TextLineA' UNION ALL
SELECT 3, 'TextLineA' UNION ALL
SELECT 3, 'TextLineB' UNION ALL
SELECT 3, 'TextLineC'

select ID, 
  MAX(CASE WHEN Item='TextLineA' THEN 1 ELSE 0 END) as TextLineA,
  MAX(CASE WHEN Item='TextLineB' THEN 1 ELSE 0 END) as TextLineB,
  MAX(CASE WHEN Item='TextLineC' THEN 1 ELSE 0 END) as TextLineC
FROM @Example
GROUP BY ID

结果是:

ID  TextLineA   TextLineB   TextLineC
1   1           1           0
2   1           0           0
3   1           1           1

其中1为true,0为false。



 类似资料:
  • 问题内容: 我正在努力寻找解决此MySQL问题的方法。我似乎无法理解该怎么做。我有下表。 如果可能的话,我想将问题答案显示为每个结果集的列,如下所示。 任何帮助将非常感激。 谢谢 问题答案: SQLFiddle演示 如果您不清楚问题的数量( 例如Matei Mihai所说的1000个 ),则非常需要动态版本。 SQLFiddle演示 输出值

  • 问题内容: 我有这样的事情: 我想返回这样的内容: 我已经搜索过关键点,连贯点和中断点,但我找不到简单,明智的解决方案。 TIA 问题答案: 不幸的是,Teradata没有PIVOT函数,但是您可以将聚合函数与CASE表达式一起使用以获取结果。 如果每个ID都有更多值,则可以添加更多CASE表达式。

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

  • 问题内容: 我知道这个话题无处不在,但我无法使其正常运行。这可能很简单。 这是基本查询后的数据示例: 我想要的是列名称是动态的: 到目前为止,根据我的研究,这是我整理的代码: 当我运行查询时,出现语法错误。 问题答案: 使用动态SQL 结果

  • 问题内容: 我有一个phone_models,phone_problems和一个phone_model_phone_problem数据透视表。数据透视表有一个额外的“价格”列。 手机型号: 电话问题: 我想做的是获取具有特定问题的特定手机的价格。 这就是我现在的方式,但是我觉得Laravel具有内置的Eloquent功能,我找不到用更简单的方式做到这一点: 这一切都是从他们的中选择特定的模型和问题

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