提问人:Fredrik 提问时间:11/15/2023 最后编辑:Fredrik 更新时间:11/16/2023 访问量:33
填写 SQL 查询中缺少的字段
Filling in missing fields in a SQL query
问:
我正在尝试将预算和实际值两个表中的数据合并到一个简单的表中,我可以在 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 中编写查询。任何帮助都值得赞赏!
此致敬意 佛瑞德
答:
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
但是,如果这些“日期”是时间戳(即包含不等于午夜的时间),则内部连接可能找不到任何匹配项。
评论