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

Oracle将几列合并为一

白学
2023-03-14
问题内容

我对Oracle Sql有疑问,

如果我有一个8列的名为A的数据:

Spot| ID |Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday 
-------------------------------------------------------------------------
   A| 1  | 0.1  |0.15  | ...........................................
-------------------------------------------------------------------------
   A| 2  | 0.2  |0.2   | ...........................................
-------------------------------------------------------------------------
   A| 3  | 0.3  |0.25  | ...........................................
-------------------------------------------------------------------------
   A| 4  | 0.4  |0.4   | ...........................................
-------------------------------------------------------------------------

我可以这样将其转换为表B:

Spot| Day of Week  | ID | Value 
-------------------------------------------------------------------------
   A| 1            | 1  |  0.1 
-------------------------------------------------------------------------
   A| 1            | 2  |  0.2 
-------------------------------------------------------------------------
   A| 1            | 3  |  0.3 
-------------------------------------------------------------------------
   A| 1            | 4  |  0.4 
-------------------------------------------------------------------------
   A| 2            | 1  |  0.15
-------------------------------------------------------------------------
 .......................................................................

这是将列(周日至周六)合并为一个名为“星期几”的新列

我该怎么办?谢谢!


问题答案:

您可以使用UNPIVOT

Oracle安装程序

CREATE TABLE your_table ( spot, id, sunday, monday, tuesday, wednesday, thursday, friday, saturday ) AS
  SELECT 'A', 1, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4 FROM DUAL UNION ALL
  SELECT 'A', 2, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45 FROM DUAL UNION ALL
  SELECT 'A', 3, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5 FROM DUAL;

查询

SELECT *
FROM   your_table
UNPIVOT ( Value FOR Day_of_week IN (
  sunday    AS 1,
  monday    AS 2,
  tuesday   AS 3,
  wednesday AS 4,
  thursday  AS 5,
  friday    AS 6,
  saturday  AS 7
 ) );

输出

S ID DAY_OF_WEEK VALUE
- -- ----------- -----
A  1           1    .1
A  1           2   .15
A  1           3    .2
A  1           4   .25
A  1           5    .3
A  1           6   .35
A  1           7    .4
A  2           1   .15
A  2           2    .2
A  2           3   .25
A  2           4    .3
A  2           5   .35
A  2           6    .4
A  2           7   .45
A  3           1    .2
A  3           2   .25
A  3           3    .3
A  3           4   .35
A  3           5    .4
A  3           6   .45
A  3           7    .5


 类似资料:
  • 问题内容: 我有3个文本字段,其中用户键入表名和2个需要合并的列名。 如何将2列值合并(合并)为1? 我使用oracle 11g企业版 问题答案: 串联?

  • 问题内容: 我有第1列和第2列,并希望将它们合并到同一表的第3列中。如果第2列为空,则显示第1列的值;如果第1列为空,则它们显示第2列的数据。如果它们都为空,则显示为空。我尝试了两件事: 1)使用CONCAT 。 仅当两个列都不为null时,它才合并列。否则,它只是将null声明为null。 2)使用(第1栏+第2栏)。 。 没有显示所需的输出。 我正在用Java编写此代码。谢谢 问题答案: us

  • 问题内容: 我正在尝试找到一种将两列合并为一个的方法,但是要保持列中的值“ 0”而不是单词的组合。 这些是我和其他人尝试过的: 有人可以让我知道我做错了吗? 问题答案: 我的猜测是,您使用的是MySQL,其中的运算符会进行加法运算,并将值自动转换为数字。如果值不是以数字开头,则转换后的值为。 所以试试这个: 两种添加空间的方法:

  • 问题内容: 我们有些SQL杂语。说我有一个看起来像这样的结果… 61E77D90-D53D-4E2E-A09E-9D6F012EB59C | A 61E77D90-D53D-4E2E-A09E-9D6F012EB59C | B 61E77D90-D53D-4E2E-A09E-9D6F012EB59C | C 61E77D90-D53D-4E2E-A09E-9D6F012EB59C | D 7ce9

  • 问题内容: 我正在写一个小脚本来帮助日本假名记忆。我如何将以下列表合并为一个?我尝试如下。 问题答案: 单程:

  • 问题内容: 我想要做的是合并几行数据,以便在Transact-SQL或SSIS中将其显示为单行。因此,例如: 制作: 到这个: 因此,我所做的就是将值合并在一起,而忽略了null值。(D =数据; T =更新) 任何建议将是最欢迎的。 谢谢。 问题答案: 这将起作用,但是由于没有标识或日期时间列-无法找到哪个更新行是较新的。因此,如果同一列上有更多更新,那么我只需按字母/数字(MIN)来选择第一个