【问题标题】:Combine Union ALL with Inner Join Statement将 Union ALL 与 Inner Join 语句结合起来
【发布时间】:2016-12-29 17:28:42
【问题描述】:

我有一个问题如何组合 sql 语句(inner join 和 union all。作为 SQL 中的新手。希望所有成员都可以帮助我解决问题。附上 SQL。leave_Trx 和 leave_History 包含相同的值需要联合。谢谢。

select m.name, t.startdt, t.enddt,t.noday,t.createdDT,
      (case when t.approveST = 'Y' then 'Approved' when t.approveST = 'N' then 'Not Approved' else 'Pending' end) as appST
      from leave_Trx t
      inner join leave_MType m on m.typeID = t.trxID
      inner join hr_personaldata b on b.pers_ID = @pers_ID
      where year(t.startdt) = @yyear
      and b.pers_ID = @pers_ID and b.pers_name LIKE '%'+@pers_name+'%'
      and b.pers_compID LIKE ''+@compID+''
      union all
      select * from leave_History h
      where year(h.startdt) = @yyear and h.status = 'A'
      ORDER BY t.startdt

【问题讨论】:

  • leave_History 表是否有六列?您当前的输出/错误是什么?
  • 不要使用where year(h.startdt) = @yyear。请参阅 stackoverflow.com/questions/14104304/… 为什么不应该这样做。
  • 错误是“使用 UNION、INTERSECT 或 EXCEPT 运算符组合的所有查询必须在其目标列表中具有相同数量的表达式。”
  • 您还需要从 leave_History 中选择 6 列,理想情况下,UNION 查询的两个部分中的列应该是相同的类型(或者类型应该相互强制)。
  • leave_Trx 和 leave_History 有 23 列

标签: mysql sql sql-server join union


【解决方案1】:
 select  t.pers_ID,t.startdt, t.enddt,t.noday,t.createdDT,
      (case when t.approveST = 'Y' then 'Approved' when t.approveST = 'N' then 'Not Approved' else 'Pending' end) as appST
      from leave_Trx t
      inner join leave_MType m on m.typeID = t.pers_ID
      inner join hr_personaldata l on l.pers_ID = @pers_ID
      where year(t.startdt) = @yyear and t.status = 'A'
      union all
      select h.pers_ID, h.startdt, h.enddt,h.noday,h.createdDT,
      (case when h.approveST = 'Y' then 'Approved' when h.approveST = 'N' then 'Not Approved' else 'Pending' end) as appST 
      from leave_History h
      inner join leave_MType m on m.typeID = h.pers_ID
      inner join hr_personaldata b on b.pers_ID = @pers_ID
      where year(h.startdt) = @yyear and h.status = 'A'

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 2018-09-21
    • 2011-07-11
    • 2019-08-09
    • 1970-01-01
    • 2015-05-19
    相关资源
    最近更新 更多