Sql 如果字段E包含;MSD“CMT变更”;然后
我不确定这是否可以在SQL查询中完成。我能做得很出色。Sql 如果字段E包含;MSD“CMT变更”;然后,sql,oracle,oracle10g,Sql,Oracle,Oracle10g,我不确定这是否可以在SQL查询中完成。我能做得很出色。 查询 SELECT A, B, C, D, E, F from TableA where D in ('MSD_CHANGE','MSD_CMT_CHANGE') 如果字段D包含MSD\u CMT\u CHANGE excel语言中的另一个单词E1=E2 目前,我从SQL中获取查询数据,并在Excel中运行脚本来执行此操作。 如果我可以在S
查询
SELECT
A,
B,
C,
D,
E,
F
from TableA
where D in ('MSD_CHANGE','MSD_CMT_CHANGE')
如果字段D包含
MSD\u CMT\u CHANGE
excel语言中的另一个单词E1=E2
目前,我从SQL中获取查询数据,并在Excel中运行脚本来执行此操作。如果我可以在SQL中执行,它将减少我的工作负载 VBA代码:
Sub Test
Dim rng as Range, cl as Range
Set rng = Range("D2:D" & Range("D" & Rows.Count).End(xlUp).Row)
For each cl in rng
If cl = "MSD_CMT_CHANGE" AND cl.Offset(-1, 0) = "MSD_CHANGE" Then
cl.Offset(-1, 1) = cl.Offset(0, 1)
End If
Next cl
End Sub
解释if field_D = MSD_CMT_CHANGE then
compare row above it if equal "MSD_CHANGE" then
cell E1 = E2.
我有5000多行数据
查看下面的图像以获得更好的解释。我假设有一列(在我的示例中,该列是
id
)您按顺序排列数据以获得列D
,如下所示
A D
------------------
1 MSD_CHANGE
-----------------
2 MSD_CMT_CHANGE
-----------------
3 MSD_CMT_CHANGE
-----------------
4 MSD_CHANGE
在本例中,ID是按其排序数据的列
select id
, d
, decode(d, 'MSD_CHANGE',
decode(lead(d, 1, d) over(order by id), 'MSD_CMT_CHANGE',
lead(e, 1, e) over(order by id) , e
)
,e) e
from t1
order by id
这是一个您按哪个列排序数据?是否有ID或其他列?显然你不能按D列排序。我是按A列排序。对不起,我不明白你所说的ID是什么意思,A列有6位数字格式的订单。非常感谢,我知道我以前应该在问题中提到,但我如何同时查看A列,因为A列中的订单ID必须相同,不想和其他订单混在一起。你说同时看A栏是什么意思?列A(在本例中为id)首先显示在查询结果中。这意味着列A必须具有相同的id,它是按A排序的,如果第1行A第2行A,则不执行所有操作。因此,如果第A3行和第A4行具有相同的orderID,那么所有这些内容,
MSD_CHANGE
和MSD_CMT_CHANGE
必须属于相同的orderID(columnA),这只是一个示例。我不知道你的A专栏有什么价值,因为你没有告诉我。我假设要得到D列的值,你必须按其他列排序,而不是D列同样,这只是一个例子。,