合并两个查询以获取 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 中的合并值的主要内容,如果未能解决你的问题,请参考以下文章