合并两个查询以获取 SQL 中的合并值

Posted

技术标签:

【中文标题】合并两个查询以获取 SQL 中的合并值【英文标题】:Merge two queries to get the combined value in SQL 【发布时间】:2016-12-23 07:34:24 【问题描述】:

我必须将两个 SQL 查询合并到一个地方来获取值。我想用同一只猫在一张表中显示年初至今和迄今为止显示的金额和单位

SQL 查询

select 
    `EmpsID`, `CAT`, `CHK_DATE`, 
    SUM(AMOUNT) as CurrentAmount,
    SUM(UNITS) as CurrentUnits 
from 
    `pays` 
where 
    `EmpsID` = 'SEMLAD01' and 
    `CAT` in ('Salary Pay', 'TRUCK ALLOWANCE', 'Expense Reimbursement', 'BONUS  (Accrued)', 'Phone Reimbursement') and 
    date(`CHK_DATE`) = '2016-11-12' 
group by 
    `CAT`

第二次查询:

select 
    `EmpsID`, `CAT`, `CHK_DATE`, 
    SUM(AMOUNT) as ytdAmount,
    SUM(UNITS) as ytdUnits 
from 
    `pays` 
where 
    `EmpsID` = 'SEMLAD01' and 
    `CAT` in ('Salary Pay', 'TRUCK ALLOWANCE', 'Expense Reimbursement', 'BONUS  (Accrued)', 'Phone Reimbursement') and 
    date(`CHK_DATE`) <= '2016-11-12' 
group by 
    `CAT`

表结构

 EmpsID       CAT               YTDAmount   YTDUnits   currentAmount     currentunit
SEMLAD01   BONUS                 3000.00      0.00        0.00      0.00
SEMLAD01   Expense               1307.90      0.00       50.00     
SEMLAD01   Phone Reimbursement    272.00     50.00     1840.00      0.00
SEMLAD01   Salary Pay           60153.74   1840.00        0.00      0.00
SEMLAD01   TRUCK ALLOWANCE       4246.26      0.00

【问题讨论】:

使用 UNION 运算符。 在发布问题之前请查看How to Ask 和minimal reproducible example。其中,哪些 dbms?到目前为止,您尝试过什么? MERGE 需要什么?是否要将第一个查询中的所有记录 UNION 第二个查询的所有记录? 我想要将第一个查询和第二个查询的值与单位和金额分开。 查询组合猫并在一个表中显示值 【参考方案1】:
     select `EmpsID`, `CAT`, `CHK_DATE`, SUM(AMOUNT) as CurrentAmount,SUM(UNITS) as CurrentUnits 
     ,sum(case when date(`CHK_DATE`) = '2016-11-12'  then AMOUNT else 0 end) as '2016-11-12Amount' ,
      ,sum(case when date(`CHK_DATE`) = '2016-11-12'  then UNITS else 0 end) as '2016-11-12Units' ,
    from `pays` where `EmpsID` = 'SEMLAD01' and 
    `CAT` in ('Salary Pay', 'TRUCK ALLOWANCE', 'Expense Reimbursement', 
    'BONUS  (Accrued)', 'Phone Reimbursement')and date(`CHK_DATE`) <= '2016-11-12' 
     group by `CAT`

【讨论】:

以上是关于合并两个查询以获取 SQL 中的合并值的主要内容,如果未能解决你的问题,请参考以下文章

如何在sql中合并计数值

如何将两个List合并,且其中不允许出现重复的项

sql合并两个子查询

SQL 合并一个表中的字段

将多个单独的查询合并为一个以在Elasticsearch中获取聚合结果

如何在id上合并两个表sql?