Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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_Db2 - Fatal编程技术网

在SQL中查找列的排列

在SQL中查找列的排列,sql,db2,Sql,Db2,我有一个参考数据表,其中列是代码和值 例如,有三种代码类型,即。A、 B,C 下表如下: Code Value --------------------- A1 a_one A2 a_two B1 b_one B2 b_two B3 b_three C1 c_one C2 c_two C3 c_three C4 c_four ------------------

我有一个参考数据表,其中列是代码和值

例如,有三种代码类型,即。A、 B,C

下表如下:

Code      Value
---------------------
 A1       a_one
 A2       a_two
 B1       b_one
 B2       b_two
 B3       b_three
 C1       c_one
 C2       c_two
 C3       c_three
 C4       c_four
---------------------
我有一个要求,输入是代码类型,输出应该是输入代码类型之间的所有排列

例如,如果输入代码类型为A和C,则my sql的输出应为:

col_1     col_2
---------------------
 A1       C1
 A1       C2
 A1       C3
 A1       C4
 A2       C1
 A2       C2
 A2       C3
 A2       C4
---------------------
类似地,如果输入代码类型是A、B、C,sql的输出将有三列,其中包含A、B、C之间的所有排列,即。A1 B1 C1至A2 B3 C4

我不知道该怎么开始。所以任何提示都是有用的


谢谢你的阅读

如果我正确理解了你的问题,这是一种罕见的情况,其中a实际上就是你想要的。交叉连接将为您提供两个集合的组合,这意味着这些集合中的值之间的所有可能组合

例如:

列为1的表A包含值“A”和“b” 第2列的表B包含值“c”和“d” 以下交叉联接查询说明没有指定“联接条件”:

SELECT  *
FROM    A
CROSS JOIN B
将返回以下结果:

1   2
--------
a   c
a   d
b   c
b   d

我创建了一个示例来向您展示一个可能的解决方案。你可以稍微调整一下,看看这是否是你所需要的。请注意,这是一个Oracle fiddle,因为没有DB2选项。

我不明白这些数字来自何方。你说如果输入是A和C,其中一个输出是A2,C4。为什么不换个方向绕A4,C2?你能详细说明一下吗?@Lennart我想他想根据输入进行动态选择列。如果是这种情况,select列中的If-ELSE语句就是解决此问题的方法。