我有以下名为_kv的Oracle10g表:
select * from _kv
ID K V
---- ----- -----
1 name Bob
1 age 30
1 gender male
2 name Susan
2 status married
我希望使用普通SQL (而不是PL/SQL)将键转换为列,以便生成的表如下所示:
ID NAME AGE GENDER STATUS
---- ----- ----- --
我有一个只有一列的表,大约有100行只有名字。但是我需要在一行中显示这3个名字。所以我会得到34行,每行有3个名字。
示例:
Name
_____
Raj
Sam
Guru
Tej
Avin
Sami
Fanst
我需要将上面的数据显示为
Name Name1 Name2
____ _____ ______
Raj Sam Guru
Tej Avin Sami
Fanst
没有条件只需要将单个列值转换为3列数据。
Oracle数据库
我有一个使用Oracle的CONNECT BY子句的Oracle SQL查询,它返回以下输出
Level Path
1 A
2 A -> B
3 A -> B -> C
4 A -> B -> C -> D
该查询将级别和路径(使用sys_connect_by_path和'->‘作为分隔符)作为两列返回。
是否可以将路径中的每一项都放在它自己的列中?例如,在上面的输出中,我知道最多有4个级别/列。如何输出如下图所示:
Level Value1 Value2 Value3 Value4
我想知道是否可以在Oracle 11g中将一些行显示为列。
我想做以下几点
id language text
--------------------------
1 english some example
1 german an example
2 english test
2 german test123
如下所示:
id english german
---------------------------------
1 some examp
我在这里写了我的第一个帖子,因为我一直无法找到自己的解决方案。我对编程/sql/ Oracle知之甚少,但我偶尔会使用(我相信)Oracle数据库。
我想要完成的是获取一个查询结果,并为每个COUNT()提供自己的列。这样做的原因是要为web应用程序生成报告。我需要结果填充它们自己的列,以便为报表设计器解析出字段。
我的查询如下所示:
SELECT ISSUE, COUNT(ISSUE) AS ISSUE_COUNT FROM ISSUE_TABLE WHERE TIME >TO_DATE('08/10/2017 00:00:00','MM/DD/YYYY HH
如何将列转换为表中的行,包括oracle中的表头。
slno id name
1 A XXXX
2 B YYYY
3 C ZZZZ
4 D MMMM
我想要这样的输出
col1 col2 col3 col4
slno 1 2 3 4
id A B C D
name XXXX YYYY ZZZZ MMMM
有没有人知道如何根据多列表格中的一列删除和合并重复项来创建“垂直摘要”。
即,尝试从表A构建表B
Table A:
Person Language
Bob English
Sarah French
John Chinese
Bob French
Sarah English
Sarah Chinese
Table B (RESULT):
Person English French Chinese
Bob Y Y (null)
Sarah Y Y Y
John (null) (null) Y
这个问题已经被问了很多次了,但我无法将我所读到的任何答案与我的确切问题联系起来。假设我的原始表有2列。
Brand Type
Mercedes Sedan
BMW Sedan
Mercedes SUV
Jeep SUV
VW Sedan
VW Small Family
我想像下面这样格式化原始表
[Sedan] [SUV] [Small Family]
BMW Mercedes VW
Mercedes Jeep NULL
VW NUL
我在Oracle PL SQL Developer中使用pivot,如下所示:
SELECT *
FROM population
PIVOT (AVG(Total) for Data_Type IN ('Group1','Group2','Group3'))
这很好用,但我不想每次添加新列或更改列(即Group4、5、6等)时都进行编辑,所以我尝试了如下所示的子查询:
SELECT *
FROM population
PIVOT (AVG(Total) for Data_Type IN (SELECT Data_Type FROM populat
我有一张这样的桌子。我所需要做的就是将指定列中的数据拆分成新的列标题,并将匹配值分配给另一列中的那些列。
App_No Code Amount
a rvd 100
a pqd 200
b srv 100
b rvd 500
b crb 300
c srv 200
and I need to select this data and convert them to a f
我知道转置(或转置) w/ sql是一种常见的要求,但我还不能确切地了解我在stack/google上要做的事情。
简而言之,我希望在不对列的所有可能值进行硬编码的情况下使用case when/then,因为这些值可能会很多,并且/或者会随着时间的推移而变化。例如,
id col val
1 a 65
1 b 34
1 c 25
2 a 67
2 c 22
...
目标是每个不同的id对应一行,每个不同的列对应列。
当col的值是静态的并且很小时,这很容易,但是当有几十个这样的值时,对case语句中的每个可能的子句进行硬编码似乎都很困难。
在psuedo代码中,我
我有下一张桌子
ID-----Name------Value
1 City New York
1 Country USA
2 City Barcelona
2 Country Spain
所需的查询输出是
ID------City-------Country
1 New York USA
2 Barcelona Spain
请让我知道是否可以使用Oracle中的查询来实现这一点。我遇到了两个概念列表和旋转,但无法理解如何使用这些来实现我的需要。
我使用listagg和下面的查询以一种方式获得结果,
目前的数据:
CountryName IndicatorCode Year Value
Arab World TX.VAL.MRCH.RS.ZS 1960 1.646954e+01
Arab World TX.VAL.MRCH.R1.ZS 1960 2.260207e+00
Arab World TX.VAL.MRCH.RS.ZS 1961 1.244584e+01
Arab World TX.VAL.MRCH.R1.ZS 1961 1.860104e+00
Zimbabwe DT.DIS.
我刚刚学会了如何在Server中进行数据透视。我想知道为什么在我们想要枢轴文本列时使用max函数?这背后的逻辑是什么?我理解如果是Count、Sum等(因为您将各自的行和列相加),但是当我们有文本列时,我不理解使用max的逻辑?
例如,我的代码是:
SELECT *
FROM ( SELECT DATE
,SITA
,EVENT
FROM [UKRMC].[dbo].[strategy]
where datename(year, DATE) = 2018 or datename(ye
我的问题是基于本教程(Oracle ):
我有一个包含指数(股票市场相关)价格的数据库,它每天都有一个价格。我需要选择数据,以便它按日期将索引价格分组,并为每个单独的索引创建一个列。
我的DB看起来如下:
我需要这个:
我已经试过了
SELECT *
FROM (SELECT name, price_date, price
FROM ibsecmprch)
PIVOT (GROUP(price_date) as pricedate FOR (name) IN ('A' AS a, 'B' AS b, 'C
想象一下我有一张像下面这样的桌子:
|-----|-------|
| KEY | VALUE |
|-----|-------|
| A | 0 |
| B | 1 |
| C | 0 |
|-----|-------|
我想要做的是执行一个SQL查询,该查询将给出如下所示的表:
|---------------|------------|
| Without Value | With Value |
|---------------|------------|
| A | B |
| C
SELECT *
from (SELECT Ant, Bird, Cat, Dog, Egg, Fish, Gold, Hen, RANK() OVER
(PARTITION BY (Ant|| Bird|| Cat|| Dog|| Egg||Fish) ORDER BY Dog) AS ROW_COUNT
FROM TABLE1 WHERE Gold = '01')
pivot( MAX(Egg||Fish||Hen) for ROW_COUNT IN (1, 2, 3, 4, 5,