Sql 将值设置为查询中的其他列
大家好,我的社区 我希望实现以下目标 当前查询表Sql 将值设置为查询中的其他列,sql,oracle,Sql,Oracle,大家好,我的社区 我希望实现以下目标 当前查询表 m_id s_s s_e a_s_t comm cosk 101 2019-12-23 13:08:49 2019-12-23 13:13:12 NS dt2 p2 101 2019-12-23 13:13:12 2019-12-23 13:14:35 UP dt2 p2 101 201
m_id s_s s_e a_s_t comm cosk
101 2019-12-23 13:08:49 2019-12-23 13:13:12 NS dt2 p2
101 2019-12-23 13:13:12 2019-12-23 13:14:35 UP dt2 p2
101 2019-12-23 13:14:35 2019-12-23 13:14:56 MS dt4 p4
m_id s_s s_e a_s_t comm cosk
101 2019-12-23 13:08:49 2019-12-23 13:13:12 NS dt2 p2
101 2019-12-23 13:13:12 2019-12-23 13:14:35 UP UP UP
101 2019-12-23 13:14:35 2019-12-23 13:14:56 MS dt4 P4
所需查询表
m_id s_s s_e a_s_t comm cosk
101 2019-12-23 13:08:49 2019-12-23 13:13:12 NS dt2 p2
101 2019-12-23 13:13:12 2019-12-23 13:14:35 UP dt2 p2
101 2019-12-23 13:14:35 2019-12-23 13:14:56 MS dt4 p4
m_id s_s s_e a_s_t comm cosk
101 2019-12-23 13:08:49 2019-12-23 13:13:12 NS dt2 p2
101 2019-12-23 13:13:12 2019-12-23 13:14:35 UP UP UP
101 2019-12-23 13:14:35 2019-12-23 13:14:56 MS dt4 P4
我编写了一个查询来获取第一个表(当前查询的表)。我想要的是以下内容
将comm,cosk设置为up,其中一个是up您可以通过一个简单的CASE语句来实现
CASE WHEN A_S_T = 'UP' THEN 'UP' ELSE COMM END AS COMM,
CASE WHEN A_S_T = 'UP' THEN 'UP' ELSE COSK END AS COSK
如果要更新表本身中的值,请使用update query
UPDATE tableName
SET [comm] = 'UP' , [cosk] = 'UP'
WHERE a_s_t = 'UP'
如果只想选择这些值而不更改表,请使用以下查询:
SELECT [m_id], [s_s],[s_e],[a_s_t],
CASE WHEN [a_s_t] = 'UP' THEN 'UP', ELSE [comm] END AS [comm],
CASE WHEN [a_s_t] = 'UP' THEN 'UP', ELSE [cosk]END AS [cosk]
FROM tableName
您可以使用
case。。当
或解码时,如下所示:
-- using case when
SELECT m_id, s_s,s_e,a_s_t,
CASE WHEN upper(a_s_t) = 'UP' THEN a_s_t ELSE comm END AS comm,
CASE WHEN upper(a_s_t) = 'UP' THEN a_s_t ELSE cosk END AS cosk
FROM (your_query);
-- or using decode
SELECT m_id, s_s,s_e,a_s_t,
Decode(upper(a_s_t),'UP',a_s_t,comm) AS comm,
Decode(upper(a_s_t),'UP',a_s_t,cosk) AS cosk
FROM (your_query);
干杯 这是一个简单的更新查询。你试过什么了吗?comm和cosk是从另一个类似这样的查询中派生出来的:tbl1.comm,tbl2中的tbl1.cosk我选择值在查询时,给出与前一个查询相同的结果(如果您可以将整个查询与其他表的联接共享,则comm或coskIt中没有up值是好的。这将有助于我们理解大小写不起作用的原因。comm和cosk是从另一个类似的查询中派生出来的:tbl1.comm,tbl2中的tbl1.cosk i选择值大小写在查询时,给出与前一个查询相同的结果(comm或coskThanks中没有up值供您评论,但解码不起作用。查询时的情况与上一次查询的结果相同(comm或cosk中没有up值当您的up不是up而是up时,表示大小写必须不同。请立即查看更新的答案。感谢更新。但当comm和cosk不在上面时,结果仍然相同。当comm和cosk不在上面时,它显然不会更改comm和cosk不在上面的记录。那么您的期望是什么?