我有一个像这样设置的列:
-----Col_2-----
Value 1
Value 2
-----------------
正如您所看到的,列中有2个值,但也有许多空格。我想要做的是运行Update
查询,用2值替换空格。我想要的是将列更新为:
-------Col_2---------
Value 1
Value 1
Value 1
Value 2
Value 2
value 2
---------------------
基本上我想运行查看第一个not null值的查询,并用该非null值替换以下空值,直到它达到下一个非null值。一旦它达到下一个非空值,它就会继续用新值替换以下空值。目前,我已经设置好了。
Update Table1,
(Select TOP 1 Col_1 AS Z FROM Table1 Where Col_1 Is Not Null)
Set Col_1 = Z
Where Col_1 Is Null;
这将使用第一个非null值替换每个null值,但是一旦它到达下一个非null值就不会停止。这导致我得到这样的东西:
---------Col_2-----------
Value 1
Value 1
Value 1
Value 2
Value 1
Value 1
-------------------------
有没有办法在访问时添加某种“直到”此语句为止?我知道你可以运行if,然后运行PHP和其他语言的语句,但不知道如何在访问或直接SQL中执行此操作。
更新:
第二列包含帐号,与COL_1
中的值相关联。原始设置看起来像这样。
-----Col_1-------Col_2------
12345 Value 1
12345
12345
54321 Value 2
54321
54321
------------------------------
有没有办法使用Col_1让Col_2看起来像:
--------Col_2---------
Value 1
Value 1
Value 1
Value 2
Value 2
Value 2
----------------------
无需在查询中手动输入Col_1的数字?我的意思是,我不想在查询中手动输入“12345”或“54321”,而是让事情自动发生。
答案 0 :(得分:0)
假设我正确理解您的问题,您可以使用更新语句,将表连接回自身。我认为这是Access中的正确语法:
update Table1
inner join Table1 t2 on Table1.col1 = t2.col1 and t2.col2 is not null
set Table1.col2 = t2.col2
答案 1 :(得分:0)
一种方法:
UPDATE SomeData SDOuter
SET Col_2 = (SELECT MAX(SDInner.Col_2) FROM SomeData SDInner WHERE SDInner.Col_1 = SDOuter.Col_1 AND Col_2 IS NOT NULL)
WHERE Col_2 IS NULL;