SQL 查询的结果生成下表:
|SEDOL | ISIN | Cash |
=============================
|ZZZ0072|GB00B7JYLW09| null |
-----------------------------
|CASH |GB00B7JYLW09| null |
-----------------------------
|ZZZ0072|GB00B7JYLW09| null |
-----------------------------
|ZZZ0009|GB00B7JYLW09| null |
-----------------------------
我需要一个查询帮助,该查询将用带有“IsCash”字段的表 testtable 中的值(任何值)替换 Cash 字段中的空值,并返回下表:
=============================
|SEDOL | ISIN | Cash |
=============================
|ZZZ0072|GB00B7JYLW09|150146|
-----------------------------
|CASH |GB00B7JYLW09| 182 |
-----------------------------
|ZZZ0072|GB00B7JYLW09| 1190 |
-----------------------------
|ZZZ0009|GB00B7JYLW09| 2000 |
-----------------------------
测试表是:
| IsCash |
==============
| 36 |
--------------
| 150146 |
--------------
| 182 |
--------------
| 2000 |
--------------
| 200952 |
--------------
| 200000 |
--------------
| 350000 |
--------------
| 150000 |
--------------
| 1190 |
--------------
我想我需要将该ISNULL
语句应用于“现金”字段,但我不确定用于从带有 IsCash 字段的测试表发出替换语句的子句。
结果很容易如下所示,因为我只希望 IsCash 字段中的测试表中的任何随机值出现在 Cash 字段中,如下所示
| SEDOL | ISIN | Cash |
===============================
|ZZZ0072 |GB00B7JYLW09| 200952|
-------------------------------
| CASH |GB00B7JYLW09| 200000|
-------------------------------
|ZZZ0072 |GB00B7JYLW09| 150000|
-------------------------------
|ZZZ0009 |GB00B7JYLW09| 1190 |
-------------------------------
使用@JonasMetzler 的数据,这是一种潜在的解决方案:
基本上,您在两侧随机排序以创建一个“排序”列,然后在该列上加入以更新值。如果源中的行数比现金表中的行数多,我们尝试使用模数来分配值
请尝试以下解决方案。
SQL
输出