希望有人可以帮助我编写SQL脚本或函数。
我有一个数据源,我希望该功能通过并基于2个指定的列填充相关列。
因此,名称和值列。
例如
name= A+b+c+d
Value= 2+1+3+5
因此,脚本/函数应该为数据源的每一行分别在a,b,c,d列中填充值2,1、3、5。
这可能吗?如果是这样,有人可以教我如何做。
Oracle安装程序 :
CREATE TABLE your_table (
name VARCHAR2(7)
CHECK ( name IS NULL OR REGEXP_LIKE( name, '^[A-D](\+[A-D]){0,3}$', 'i' ),
value VARCHAR2(200),
A VARCHAR2(50),
B VARCHAR2(50),
C VARCHAR2(50),
D VARCHAR2(50)
);
INSERT INTO your_table ( name, value, a, b, c, d )
SELECT 'a+b+c+d', 'x2+x1+x3+x5', NULL, NULL, NULL, NULL FROM DUAL UNION ALL
SELECT 'a+d+c', 'y7+y3+y4', NULL, NULL, NULL, NULL FROM DUAL;
更新声明 :
MERGE INTO your_table dst
USING (
WITH splitstrings ( rid, name, value, col, val, lvl ) AS (
SELECT ROWID,
UPPER( name ),
value,
REGEXP_SUBSTR( UPPER( name ), '[^+]+', 1, 1 ),
REGEXP_SUBSTR( value, '[^+]+', 1, 1 ),
1
FROM your_table
WHERE name IS NOT NULL
AND value IS NOT NULL
UNION ALL
SELECT rid,
name,
value,
REGEXP_SUBSTR( name, '[^+]+', 1, lvl + 1 ),
REGEXP_SUBSTR( value, '[^+]+', 1, lvl + 1 ),
lvl + 1
FROM splitstrings
WHERE lvl < LEAST(
REGEXP_COUNT( name, '[^+]+' ),
REGEXP_COUNT( value, '[^+]+' )
)
)
SELECT *
FROM ( SELECT rid, col, val FROM splitstrings )
PIVOT ( MAX( val ) FOR col IN ( 'A' AS a, 'B' AS b, 'C' AS c, 'D' AS d ) )
) src
ON ( src.rid = dst.ROWID )
WHEN MATCHED THEN
UPDATE
SET A = COALESCE( src.A, dst.A ),
B = COALESCE( src.B, dst.B ),
C = COALESCE( src.C, dst.C ),
D = COALESCE( src.D, dst.D );
输出 :
SELECT * FROM your_table;
NAME VALUE A B C D
------- ----------- -- -- -- --
a+b+c+d x2+x1+x3+x5 x2 x1 x3 x5
a+d+c y7+y3+y4 y7 y4 y3
Oracle安装程序 :
CREATE TABLE your_source (
name VARCHAR2(50),
value VARCHAR2(50)
);
INSERT INTO your_source
SELECT 'a+b+c+d', 'x2+x1+x3+x5' FROM DUAL UNION ALL
SELECT 'a+d+c', 'y7+y3+y4' FROM DUAL;
CREATE TABLE your_destination (
-- name VARCHAR2(50),
-- value VARCHAR2(50),
A VARCHAR2(20),
B VARCHAR2(20),
C VARCHAR2(20),
D VARCHAR2(20)
);
插入语句 :
INSERT INTO your_destination ( /* name, value, */ A, B, C, D )
WITH splitstrings ( rid, name, value, col, val, lvl ) AS (
SELECT ROWID,
UPPER( name ),
value,
REGEXP_SUBSTR( UPPER( name ), '[^+]+', 1, 1 ),
REGEXP_SUBSTR( value, '[^+]+', 1, 1 ),
1
FROM your_source
WHERE name IS NOT NULL
AND value IS NOT NULL
UNION ALL
SELECT rid,
name,
value,
REGEXP_SUBSTR( name, '[^+]+', 1, lvl + 1 ),
REGEXP_SUBSTR( value, '[^+]+', 1, lvl + 1 ),
lvl + 1
FROM splitstrings
WHERE lvl < LEAST(
REGEXP_COUNT( name, '[^+]+' ),
REGEXP_COUNT( value, '[^+]+' )
)
)
SELECT /* name, value, */ A,B,C,D
FROM ( SELECT rid, /* name, value, */ col, val FROM splitstrings )
PIVOT ( MAX( val ) FOR col IN ( 'A' AS a, 'B' AS b, 'C' AS c, 'D' AS d ) );
输出 :
SELECT * FROM your_destination
A B C D
-- -- -- --
x2 x1 x3 x5
y7 y4 y3
例如,让我们假设,在表1中,我有以下列 在表2中,我有相同的两列,但有5000行。让我们考虑5行, 现在,在我的工作表2中,我有5000行,A列填充了,但我希望根据工作表1中的值自动填充B列。我尝试过使用间接函数,但没有成功。我使用的公式是,其中test是我的工作表名。谁能告诉我这个问题出在哪里,或者有没有其他方法来解决这个问题?谢谢你。
问题内容: 我下面的代码将在您更改国家/地区列表时更改状态下拉列表。 仅当选择国家ID号234和224时,如何才能更改状态列表? 如果选择了另一个国家,则应将其更改为此文本输入框 表格 JavaScript 问题答案: 只需在执行AJAX请求之前检查countryId值,并且仅在countryId在允许范围内时才执行请求。在countryId不匹配的情况下,我将隐藏选择(也可能清除其值),并显示一
我有一个带有几列的。其中一列包含使用货币的符号,例如欧元或美元符号。另一列包含预算值。例如,在一行中,它可能意味着5000欧元的预算,而在下一行中,它可能意味着2000美元的预算。 在熊猫我想添加一个额外的列到我的DataFrame,正常化的欧元预算。所以基本上,对于每一行,如果货币列中的符号是欧元符号,新列中的值应该是预算列中的值*1,新列中的值应该是预算列的值*0.78125如果货币栏中的符号
我想在两栏中填入缺少的值。根据预定义的类别1的最后日期(在先前填充的行中预定义),存在日期,类别2应填充另一行的值,例如: 数据示例: 因此,应根据< code>Cat1列- 中< code>cat值的最后存在日期,填写< code>Date列的< code>NaN。< code>Cat2列中的< code>NaN应由< code>mouse填写,作为已经为< code > Date -< cod
问题内容: 如何用一个列表提供的数据填充数组? 例如,我有一个包含字符串的列表: 然后我想将此数据复制到String数组中: 问题答案: list中有一个toArray()方法… 您必须首先分配一个适当大小的数组(通常为list.size()),然后将其作为参数传递给toArray方法。该数组将使用列表内容初始化。 例如: 您也可以在toArray的括号内进行新调用
问题内容: 我想创建两个下拉列表,类别和项目。 如果我选择名为car的类别之一,则项目下拉列表应包含Honda,Volvo和Nissan。 如果我选择一个名为phone的类别,则项目下拉列表应具有此iPhone,Samsung,Nokia。 我怎样才能做到这一点?我知道我无法使用纯HTML做到这一点。 问题答案: 工作演示 (带有jquery) 更新 :使用eval()能够添加所需的任意数量的数组