![](/img/trans.png)
[英]DISTINCT from One table and INNER JOIN with another table in snowflake
[英]Using SQL in snowflake I want to take one table's column and add that to another snowflake table based on shared join keys, but not working?
我有兩個表,一個名為: stg_tbl
的階段表和一個名為: target_tbl
的目標表。 在stg_tbl
中有一個名為finance_data
的列,我想將其添加到target_tbl
中。 target_tbl
和stg_tbl
共享兩列: person_id, start_dt
。 我想根據連接鍵將 stg_tbl 的stg_tbl
列連接到target_tbl
: person_id, start_dt
。
到目前為止我已經嘗試過:
SELECT a.*, b.finance_data
FROM target_tbl AS a
LEFT JOIN stg_tbl AS b
ON a.person_id=b.person_id
AND a.start_dt=b.start_dt
不確定我在這里做錯了什么。 但是在我執行此操作並檢查不是 null 行之后,如下所示:
SELECT * FROM target_tbl WHERE finance_data IS NOT NULL;
我得到零結果。 所以在某個地方這個數據沒有被匹配/注冊。
我正在通過數據塊筆記本執行此 SQL 並且已經成功連接到雪花。
我正在通過 cursor 執行代碼,如下所示:
cursor.execute("ALTER TABLE TARGET_TBL ADD COLUMN FINANCE_DATA FLOAT")
cursor.execute("""
SELECT a.*, b.finance_data
FROM target_tbl AS a
LEFT JOIN stg_tbl AS b
ON a.person_id=b.person_id
AND a.start_dt=b.start_dt
""")
如果您要填充 target_tbl 中新添加的 finance_data 列,您需要執行 UPDATE 語句。 是這樣的:
UPDATE target_tbl SET finance_data=stg_tbl.finance_data
FROM stg_tbl
WHERE target_tbl.person_id=stg_tbl.person_id
AND target_tbl.start_dt=stg_tbl.start_dt
更新聲明
update target_tbl set finance_data=s.finance_data
from target_tbl t
inner join stg_tbl s on s.person_id=t.person_id and s.start_dt=t.start_dt;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.