填写 SQL 查询中缺少的字段

Filling in missing fields in a SQL query

提问人:Fredrik 提问时间:11/15/2023 最后编辑:Fredrik 更新时间:11/16/2023 访问量:33

问:

我正在尝试将预算和实际值两个表中的数据合并到一个简单的表中,我可以在 Google Looker Studio 的数据透视表中使用该表来比较实际值和预算值。我设法将表格和财务数据结合起来,但我也想从预算表中传输其他数据,例如帐户名称到新表,也用于来自实际值的行。我对 SQL 很陌生,我想我需要分两步完成,但我还没有找到如何做。

这些表如下所示:

tblActual:

日期 帐户 平衡
2023-01-01 1234 100
2023-01-02 1235 -100

tbl预算:

日期 帐户 平衡 帐户类型 帐户组
2023-01-01 1234 150 销售 收入
2023-01-02 1245 -150 原料 费用

现在,我已设法将这两者与以下查询相结合:

SELECT coalesce(a.date, b.date) as date, coalesce(a.Account, b.Account) as Account, a.Balance as Outcome, Account as Budgeted, b.AccountGroup, b.AccountType
FROM tblActual a
full outer join tblBudget b 
ON (b.date = a.date and b.Account = a.Account)
ORDER BY datum DESC

这似乎有效,我得到了一个这样的表格:

日期 帐户 结果 预算 帐户类型 帐户组
2023-01-01 1234 100
2023-01-02 1245 -100
2023-01-01 1234 150 销售 收入
2023-01-02 1245 -150 原料 费用

但是,如何确保新表中的 AccountTypes 和 AccountGroups 也为从 tblActual 中获取的行填充?因此,所有行都有其正确的 AccountTypes 和 AccountGroups(在 tblBudget 中定义)。如下所示:

日期 帐户 结果 预算 帐户类型 帐户组
2023-01-01 1234 100 销售 收入
2023-01-02 1245 -100 原料 费用
2023-01-01 1234 150 销售 收入
2023-01-02 1245 -150 原料 费用

我正在 Google BigQuery 中编写查询。任何帮助都值得赞赏!

此致敬意 佛瑞德

加入 google-bigquery looker-studio Coalesce

评论


答:

0赞 Adrian Maxwell 11/16/2023 #1

从我在问题中看到的数据来看,您只需要一个内部连接,如下所示:

SELECT
       a.date
     , a.Account
     , a.Balance as Outcome
     , b.Budgeted
     , b.AccountGroup
     , b.AccountType
FROM tblActual a
INNER JOIN tblBudget b ON b.date = a.date and b.Account = a.Account
ORDER BY
       a.date DESC
     , a.Account

但是,如果这些“日期”是时间戳(即包含不等于午夜的时间),则内部连接可能找不到任何匹配项。