mysql - SQL Inner Join with/子查询返回与/criteria的差异

标签 mysql sql join subquery

我在做什么:

我正在尝试获取两张表,一张包含 2016 年的数据,一张包含 2015 年的数据,并减去每列中的单元格以仅显示大于或等于 10,000 的差异,四舍五入到最接近的第 100 位。新表。

问题:

我能够弹出新表格,其中仅显示减法部分的正确金额。我无法添加任何其他条件来过滤结果以显示 >= 10000 或四舍五入到第 100 位。

经过研究,我的 JOIN 似乎需要一个子查询来显示我想要的内容,但我已经摆弄它好几个小时了,当我添加子查询时,我似乎无法让它显示任何内容。任何帮助都会很棒。这是我在没有 >= 10000 和舍入的情况下工作的方法:

     SELECT
        `prioryeardata`.location,
        `currentdata`.`2010` - `prioryeardata`.`2010` AS '2010_Difference',
        `currentdata`.`2011` - `prioryeardata`.`2011` AS '2011_Difference',
        `currentdata`.`2012` - `prioryeardata`.`2012` AS '2012_Difference',
        `currentdata`.`2013` - `prioryeardata`.`2013` AS '2013_Difference',
        `currentdata`.`2014` - `prioryeardata`.`2014` AS '2014_Difference',
        `currentdata`.`2015` - `prioryeardata`.`2015` AS '2015_Difference'
    FROM `prioryeardata` 
    JOIN `currentdata`
    ON `prioryeardata`.location = `currentdata`.location;

最佳答案

看看下面的查询可能会有帮助(使用 sql-server)

select location,Round([2010_Difference],3).[2010_Difference],Round([2011_Difference],3)[2011_Difference]
            ,Round([2012_Difference],3)[2012_Difference],Round([2013_Difference],3)[2013_Difference]
            ,Round([2014_Difference],3)[2014_Difference],Round([2015_Difference],3)[2015_Difference] from 
 ( SELECT
    prioryeardata.location,
    currentdata.year2010 - prioryeardata.year2010 AS [2010_Difference],
    currentdata.year2011 - prioryeardata.year2011 AS [2011_Difference],
    currentdata.year2012 - prioryeardata.year2012 AS [2012_Difference],
    currentdata.year2013 - prioryeardata.year2013 AS [2013_Difference],
    currentdata.year2014 - prioryeardata.year2014 AS [2014_Difference],
    currentdata.year2015 - prioryeardata.year2015 AS [2015_Difference]
FROM prioryeardata 
JOIN currentdata
ON prioryeardata.location = currentdata.location

) t where t.[2015_Difference]>=10000  --or .......

编辑

    select location,Round([2010_Difference],3).[2010_Difference],Round([2011_Difference],3)[2011_Difference]
                ,Round([2012_Difference],3)[2012_Difference],Round([2013_Difference],3)[2013_Difference]
                ,Round([2014_Difference],3)[2014_Difference],Round([2015_Difference],3)[2015_Difference]

     from  

      (select t.location
             ,case when [2010_Difference]>10000 then [2010_Difference] Else 0 End as [2010_Difference]
             ,case when [2011_Difference]>10000 then [2011_Difference] Else 0 End as [2011_Difference]
             ,case when [2012_Difference]>10000 then [2012_Difference] Else 0 End as [2012_Difference]
             ,case when [2013_Difference]>10000 then [2013_Difference] Else 0 End as [2013_Difference]
             ,case when [2014_Difference]>10000 then [2014_Difference] Else 0 End as [2014_Difference]
             ,case when [2015_Difference]>10000 then [2015_Difference] Else 0 End as [2015_Difference]

          from        
                 ( SELECT
                    prioryeardata.location,
                    currentdata.year2010 - prioryeardata.year2010 AS [2010_Difference],
                    currentdata.year2011 - prioryeardata.year2011 AS [2011_Difference],
                    currentdata.year2012 - prioryeardata.year2012 AS [2012_Difference],
                    currentdata.year2013 - prioryeardata.year2013 AS [2013_Difference],
                    currentdata.year2014 - prioryeardata.year2014 AS [2014_Difference],
                    currentdata.year2015 - prioryeardata.year2015 AS [2015_Difference]
                FROM prioryeardata 
                JOIN currentdata
                ON prioryeardata.location = currentdata.location

                ) t where t.[2010_Difference]>=10000  or t.[2011_Difference]>=10000 or t.[2012_Difference]>=10000 
                      or t.[2013_Difference]>=10000 or t.[2014_Difference]>=10000 or t.[2015_Difference]>=10000

      )tt

关于mysql - SQL Inner Join with/子查询返回与/criteria的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45540008/

相关文章:

MySQL 在函数内部调用过程进行计数

mysql - SQL中基于连接多个表的过滤

MYSQL Join查询三张表

python - 从 RDD 到联合 DataFrame PySpark

php - 需要从不存在某些条件的 MySQL 表中获取值

mysql - 根据单独表中的条件查询具有 2m+ 行的 MySQL 表的正确方法

php - Laravel Eloquent ORM 方法基于 ids 数组检索多行

Mysql连接多个总计——使查询高效

sql - 为什么SQL函数总是返回空结果集?

sql - 如何在不违反约束的情况下增加主键列中的现有值?