【问题标题】:SQL / Oracle to Tableau - How to combine to sort based on two fields?SQL / Oracle 到 Tableau - 如何组合基于两个字段进行排序?
【发布时间】:2018-03-17 03:19:48
【问题描述】:

我的表格如下:

tbl_tasks

+---------+-------------+
| Task_ID | Assigned_ID |
+---------+-------------+
|       1 |           8 |
|       2 |          12 |
|       3 |          31 |
+---------+-------------+

tbl_resources

+---------+-----------+
| Task_ID | Source_ID |
+---------+-----------+
|       1 |         4 |
|       1 |        10 |
|       2 |        42 |
|       4 |         8 |
+---------+-----------+

一项任务被分配给至少一个人(由“assigned_ID”表示),然后可以将任意数量的人分配为源(由“source_ID”表示)。 ID 号都与另一个表中的名称相关联。虽然 ID 号的名称不同,但它们都返回到同一个表中。

我有什么办法可以根据 ID 组合这两个表,以便我可以根据某人的 ID 号进行搜索?例如,如果我决定搜索或执行 WHERE User_ID = 8,为了查看 8 参与了哪些任务,我将返回任务 1 和任务 4。

现在,通过将所有表格连接在一起,我可以轻松过滤“已分配”而不是“来源”,因为表格中有多个条目。

【问题讨论】:

    标签: sql oracle tableau-api


    【解决方案1】:

    使用union all:

    select distinct task_id
    from ((select task_id, assigned_id as id
           from tbl_tasks
          ) union all
          (select task_id, source_id
           from tbl_resources
          )
         ) ti
    where id = ?;
    

    请注意,这使用select distinct,以防有人在两个表中被分配到相同的任务。如果没有,请删除distinct

    【讨论】:

    • 效果很好。倒数第二行的“ti”是什么?
    • 如果我删除“distinct”和“where”子句,这是否会给我一个完整的 task_id 列表以及分配给/来源的人?
    • @buttpee 。 . .是的,尽管您还需要在select 中包含id。而ti 是表别名。
    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    相关资源
    最近更新 更多