Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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语句,或者需要多个语句?_Mysql - Fatal编程技术网

是否有一个MySQL语句,或者需要多个语句?

是否有一个MySQL语句,或者需要多个语句?,mysql,Mysql,我有一张有MLSNumber,ListingContractDate,CloseDate的桌子 我想总结一下从本月开始到2000年1月的本月活动 我有这张报表,它按月汇总了合同日期 SELECT COUNT(MLSNumber) AS NewListings, DATE_FORMAT(ListingContractDate,'%M %Y') FROM Listings WHERE Neighbourhood = 'Beachside' AND ListingContractDate >

我有一张有MLSNumber,ListingContractDate,CloseDate的桌子

我想总结一下从本月开始到2000年1月的本月活动

我有这张报表,它按月汇总了合同日期

SELECT COUNT(MLSNumber) AS NewListings, DATE_FORMAT(ListingContractDate,'%M %Y')
FROM Listings
WHERE Neighbourhood = 'Beachside' 
  AND ListingContractDate >= '2000-01-01' 
GROUP BY YEAR(ListingContractDate), MONTH(ListingContractDate)
ORDER BY ListingContractDate DESC

此语句的两个问题是,如果在该月跳过的特定月份中未找到任何内容,则我需要返回0,这样就不会缺少任何月份,我不知道如何在CloseDate字段中获得相同的计数,或者我是否只需要运行第二次查询,并使用PHP将两个结果按月和按年进行匹配。

一个非常有用的项目是一个只包含一组整数的计数表。我使用了一个脚本来生成这样一个表

通过该表,我现在可以将与时间相关的数据左键连接到该表,如下所示:

set @startdt := '2000-01-01';

SELECT COUNT(MLSNumber) AS NewListings, DATE_FORMAT(T.Mnth,'%M %Y') 
FROM (
      select
            tally.id
          , date_add( @startdt, INTERVAL (tally.id - 1) MONTH ) as Mnth
          , date_add( @startdt, INTERVAL tally.id MONTH ) as NextMnth
      from tally
      where tally.id <= (
          select period_diff(date_format(now(), '%Y%m'), date_format(@startdt, '%Y%m')) + 1
            )
     ) t
LEFT JOIN Temp On Temp.ListingContractDate >= T.Mnth and Temp.ListingContractDate < T.NextMnth
GROUP BY YEAR(T.Mnth), MONTH(T.Mnth) 
ORDER BY T.Mnth DESC
Logc

定义一个声明日期 使用以下公式计算从该日期到现在的月数: 周期_DIFF+1 从理货表中选择该数量的记录 创建期间开始和结束日期tally.Mnth和tally.NextMnth 使用左键将实际数据连接到理货表 Temp.ListingContractDate>=T.Mnth和Temp.ListingContractDate 分组并统计数据
参见

一个非常有用的项目是一个简单地由一组整数组成的计数表。我使用了一个脚本来生成这样一个表

通过该表,我现在可以将与时间相关的数据左键连接到该表,如下所示:

set @startdt := '2000-01-01';

SELECT COUNT(MLSNumber) AS NewListings, DATE_FORMAT(T.Mnth,'%M %Y') 
FROM (
      select
            tally.id
          , date_add( @startdt, INTERVAL (tally.id - 1) MONTH ) as Mnth
          , date_add( @startdt, INTERVAL tally.id MONTH ) as NextMnth
      from tally
      where tally.id <= (
          select period_diff(date_format(now(), '%Y%m'), date_format(@startdt, '%Y%m')) + 1
            )
     ) t
LEFT JOIN Temp On Temp.ListingContractDate >= T.Mnth and Temp.ListingContractDate < T.NextMnth
GROUP BY YEAR(T.Mnth), MONTH(T.Mnth) 
ORDER BY T.Mnth DESC
Logc

定义一个声明日期 使用以下公式计算从该日期到现在的月数: 周期_DIFF+1 从理货表中选择该数量的记录 创建期间开始和结束日期tally.Mnth和tally.NextMnth 使用左键将实际数据连接到理货表 Temp.ListingContractDate>=T.Mnth和Temp.ListingContractDate 分组并统计数据 请看A?请看A的小提琴?请看A的小提琴