Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql 8上的聚合查询_Mysql_Mysql 8.0 - Fatal编程技术网

mysql 8上的聚合查询

mysql 8上的聚合查询,mysql,mysql-8.0,Mysql,Mysql 8.0,我有两张桌子,津贴和薪水 津贴表看起来像 Id Title value 1 Transport 2000 2 Housing 1000 3 Housing 1000 工资表 id Salary 1 2000 2 1000 3 3000 对于没有住房补贴的身份证,住房的价值应视为0,仅显示工资。如果有住房补贴,把工资和住房加起来 我的查询没有给出正确的输出 SELECT s.id, C

我有两张桌子,津贴和薪水

津贴表看起来像

Id  Title       value
1   Transport   2000
2   Housing     1000
3   Housing     1000
工资表

    id  Salary
    1   2000
    2   1000
    3   3000
对于没有住房补贴的身份证,住房的价值应视为0,仅显示工资。如果有住房补贴,把工资和住房加起来

我的查询没有给出正确的输出

SELECT 
    s.id,
    CASE
        WHEN t.`Housing` = 0 THEN s.salary
    END AS Salary,
    CASE
        WHEN t.`Housing` <> 0 THEN t.Housing + s.salary
        WHEN t.`Housing` = 0 THEN  s.salary
    END AS SalaryAndHousing
FROM
    (SELECT 
        id,
            CASE
                WHEN Title = 'Housing' THEN value
                WHEN Title <> 'Housing' THEN 0
            END AS 'Housing'
    FROM
        Allowance) t
        JOIN
    Salaries s ON (t.id = s.id);
应该是这样的,

   id        Salary    SalaryAndHousing
    1         2000          2000 -- 2000 + 0
    2         1000          2000 -- 1000 + 1000
    3         3000          4000 -- 1000 + 3000

这是一个非常简单的查询:

select 
    s.id,
    s.Salary,
    s.Salary + coalesce(a.value, 0) SalaryAndHousing
from Salaries s 
left join Allowance a on a.id = s.id and a.Title = 'Housing'
order by s.id;

试穿一下

谢谢,但我需要两列,而不是我想要的结果中显示的一列。是的。仅当t.
住房
=0时,才会打印刚刚更新的薪资-您肯定一直想要薪资。。
select 
    s.id,
    s.Salary,
    s.Salary + coalesce(a.value, 0) SalaryAndHousing
from Salaries s 
left join Allowance a on a.id = s.id and a.Title = 'Housing'
order by s.id;