【问题标题】:Sorting and Adding to a table based on conditions根据条件对表格进行排序和添加
【发布时间】:2016-11-22 23:41:08
【问题描述】:

表 1 有 4 列,模拟数据如下所示...

MASTER_ID  SUB_ID  DESC   Percent
1234       ABC     TEXT   80
1234       XYZ     TEXT2  20
1234       XYZ     TEXT4  30
9876       XYZ     TEXT2  20
9876       XYZ     TEXT5  10
9876       ABC     TEXT1  20 

表 2 包含每个 MASTER_ID 的 DESC 的不同值,即表 1 的第 3 列 ....

MASTER_ID  DESC
1234       TEXT
1234       TEXT2
1234       TEXT4
9876       TEXT2
9876       TEXT5
9876       TEXT1

我需要查看 TABLE1 并找出每个特定 MASTER_ID 的每个 SUB_ID 缺少哪个 DESC。每个 MASTER_ID 与另一个无关......这意味着我不应该看到 MASTER_PLAN 中不存在的描述。例如 MASTER_ID 9876 的 DESC 为 TEXT5。这个 DESC 应该只出现在 MASTER_ID 的 9876 DESC 中。 SUB_ID 可以存在于不同的 MASTER_ID 中。但如前所述,每个 MASTER_ID 都应该被认为是独立的。

决赛桌应该是这样的......

MASTER_ID  SUB_ID  DESC   Percent
1234       ABC     TEXT    80
1234       ABC     TEXT2   0
1234       ABC     TEXT4   0
1234       XYZ     TEXT2   20
1234       XYZ     TEXT4   30
1234       XYZ     TEXT    0
9876       XYZ     TEXT2   20
9876       XYZ     TEXT5   10
9876       XYZ     TEXT1   0
9876       ABC     TEXT1   20
9876       ABC     TEXT2   0
9876       ABC     TEXT5   0

【问题讨论】:

  • 请标记列。另外,什么是 MASTER_PLAN?
  • 抱歉 MASTER_PLAN 应该是 MASTER_ID... COL1 是 MASTER_ID,COL2 是 SUB_ID,COL3 是 DESC,COL4 是百分比。对于表 2,它只有 2 列... COL1 是 MASTER_ID 而 COL2 是 DESC

标签: mysql


【解决方案1】:

你可以试试下面的查询

select t3.master_id, t3.sub_id, t3.Desc1, case when t4.percentage is null then 0 else t4.percentage end percentage
from
    (select  distinct t1.master_id, sub_id, t2.Desc1
    from table1 t1
    cross join table2 t2
    where t1.master_id = t2.master_id) t3    
left join table1 t4 
 on t4.master_id = t3.master_id 
  and t3.sub_id = t4.sub_id 
  and t3.desc1 = t4.desc1

上面的查询给我下面的结果

希望这对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2017-02-28
    • 2018-11-01
    • 1970-01-01
    • 2016-11-14
    相关资源
    最近更新 更多