Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在单行的不同列中获取不同的行值_Sql_Oracle - Fatal编程技术网

Sql 在单行的不同列中获取不同的行值

Sql 在单行的不同列中获取不同的行值,sql,oracle,Sql,Oracle,我的桌子看起来像这样: Param_id Param_value ------------------------ A 1 B 2 C 3 D 4 。。。。等等现在我只需要Param_id“A”和“B”的值 现在我想在两个不同的列中获得param_值,而不是在两个不同的行中。但是如果我在子句中使用,它将返回两行结果。 我想要像下面这样的东西: Param_value_1 Para

我的桌子看起来像这样:

Param_id     Param_value
------------------------
A             1
B             2
C             3
D             4
。。。。等等现在我只需要Param_id“A”和“B”的值

现在我想在两个不同的列中获得param_值,而不是在两个不同的行中。但是如果我在子句中使用
,它将返回两行结果。
我想要像下面这样的东西:

Param_value_1       Param_value_2
---------------------------------
1                   2

我不能使用
listag
pivot
,因为它们不符合我的目的。有没有其他方法可以做到这一点?我在谷歌上搜索过,但找不到任何解决方案。

传统的旋转方式。。。由于您正在('A','B')
中查找
parameter_id的参数值,因此将结果列命名为
param_value_1
param_value_2
没有多大意义;为什么不
参数值a
参数值b
?(否则,是什么决定了
'A'
1
'B'
2
,而不是相反?)

因此-回到旧的数据透视方式(尽管我怀疑无论要求如何,
PIVOT
也会起作用-除非您使用的是Oracle 10或更低版本):


表中只有这些行吗?没有,还有很多行,这只是一个示例。然后显示更多数据。如果没有显示适当的数据,您所要求的是微不足道的。您可以尝试以下链接:所选答案的透视解决方案以外的解决方案:不清楚。。。参数值1与参数值2的区别是什么?这与第一列中的值(A,B)有什么关系?如果您有更多的行,您希望结果是什么,一行多列?多少列-100?1000? 一百万?更多?使用此构造时存在问题,因为我们使用的产品不支持使用这种SQL查询。还有其他办法吗?我们使用的是Oracle 11.2,您告诉pivot,我们如何使用pivot实现这一点?因为据我所知,pivot只能使用聚合函数,并且可以为每个参数\u id提供例如计数,但不能为参数\u值提供计数。@Mistu4u哪个产品不支持
MAX
CASE
语句?对于pivot,也可以只使用
MAX
,而不使用
COUNT
。参数id在('A'作为参数值_1,'B'作为参数值_2)中为
PIVOT(最大值(参数值))
@PhamX.Bach,这不是关于MAX或CASE,而是关于这个答案中使用的这个特定构造。我将检查使用MAX-though和PIVOT。
PIVOT
确实是一个聚合操作(我上面提供的解决方案也是如此)但是:如果
param_id='A'
在您的表中只出现一次,您认为
MAX(param_值)是什么
param_id='A'
所在的行上?您是否尝试过使用
PIVOT
的SQL解决方案,但它不起作用,或者您只是假设它不起作用?尝试一下,您会看到它起作用了!您使用的是什么产品?以及“种类”是什么我的解决方案所属的SQL中,您的产品不支持的部分?不支持的部分有哪些?
select max(case when param_id = 'A' then param_value end) as param_value_a,
       max(case when param_id = 'B' then param_value end) as param_value_b
from   your_table;