如何从同一个表中组合这两个查询?

时间:2014-04-23 21:12:17

标签: sql coldfusion

因为“ColdFusion不支持通过INNER JOIN或OUTER JOIN子句加入” 我如何能够将这两个查询组合在一起,从中提供数据 过去2个月?

select starburst_dept_name, starburst_dept_average,MONTHLY_PAST_DATE
  from cse_reports_month
  where starburst_dept_name is not NULL
 and YEAR(MONTHLY_PAST_DATE) = YEAR(GETDATE())
    and    MONTH(MONTHLY_PAST_DATE) = MONTH(GETDATE())-1


      select starburst_dept_name, starburst_dept_average,MONTHLY_PAST_DATE
  from cse_reports_month
  where starburst_dept_name is not NULL
 and YEAR(MONTHLY_PAST_DATE) = YEAR(GETDATE())
    and    MONTH(MONTHLY_PAST_DATE) = MONTH(GETDATE())-2

我想要一个查询来组合这两个我将如何做到这一点 在ColdFusion工作? 我想要的是比较上个月的starburst_dept_average> starburst_dept_average最近2个月前?

2 个答案:

答案 0 :(得分:7)

为了澄清,CF仅在查询(QoQ)的查询中不支持INNER和OUTER JOIN。 cse_reports_month是查询的名称还是数据库表的名称?你使用getdate()使它听起来像是一个常规的SQL查询,而不是QoQ。

以下查询应该按照您原来的逻辑运行:

SELECT starburst_dept_name, starburst_dept_average, MONTHLY_PAST_DATE
FROM   cse_reports_month
WHERE  starburst_dept_name is not NULL
AND    YEAR(MONTHLY_PAST_DATE) = YEAR(GETDATE())
AND    (
       MONTH(MONTHLY_PAST_DATE) = MONTH(GETDATE())-1 OR 
       MONTH(MONTHLY_PAST_DATE) = MONTH(GETDATE())-2
       )

但正如所指出的那样,这对1月份不起作用。 2月 - 你需要使用一些不同的日期比较运算符。

根据您要显示的内容(以及MONTHLY_PAST_DATE数据代表的内容),以下内容可能有效(您可能需要根据具体需要修改一下):

SELECT starburst_dept_name, starburst_dept_average, MONTHLY_PAST_DATE
FROM   cse_reports_month
WHERE  starburst_dept_name is not NULL
AND    DATEDIFF(m,MONTHLY_PAST_DATE,getdate()) IN (1,2)

答案 1 :(得分:2)

您可以使用SQL UNION语句组合这些查询结果 http://www.w3schools.com/sql/sql_union.asp