1

有人可以帮助我吗?

我有这个查询:

Use StockDataFromSella;
DECLARE @D1 DateTime
DECLARE @D2 DateTime
DECLARE @Interval FLOAT

SET @D1  = '2008-09-21T09:00:00.000'
SET @D2  = '2010-10-20T17:30:00.000'
SET @Interval = 15

;WITH
L0 AS (SELECT 1 AS c UNION ALL SELECT 1),
L1 AS (SELECT 1 AS c FROM L0 A CROSS JOIN L0 B),
L2 AS (SELECT 1 AS c FROM L1 A CROSS JOIN L1 B),
L3 AS (SELECT 1 AS c FROM L2 A CROSS JOIN L2 B),
L4 AS (SELECT 1 AS c FROM L3 A CROSS JOIN L3 B),
Nums AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 0)) AS i FROM L4),
Ranges AS(
 SELECT DATEADD(MINUTE,@Interval*(i-1),@D1) AS StartRange,
        DATEADD(MINUTE,@Interval*i,@D1) AS NextRange
        FROM Nums where i <= 1+CEILING(DATEDIFF(MINUTE,@D1,@D2)/@Interval)) 
        ,cte AS ( SELECT * ,ROW_NUMBER() OVER (PARTITION BY 
        Simbolo,r.StartRange ORDER BY [DataOra])      AS RN_ASC
       ,ROW_NUMBER() OVER (PARTITION BY Simbolo,r.StartRange ORDER BY 
       [DataOra] DESC) AS RN_DESC
       FROM Ranges r
       JOIN dbo.tbl1MinENI p  ON p.[DataOra] >= r.StartRange and  
       p.[DataOra]  <  r.NextRange )

SELECT  Simbolo,
  MAX(CASE WHEN RN_ASC=1 THEN [DataOra] END) AS AperturaDataOra,
  MAX(CASE WHEN RN_ASC=1 THEN [Apertura] END) AS [Apertura],
  MAX(Massimo) Massimo,
  MIN(Minimo)  Minimo,
  MAX(CASE WHEN RN_DESC=1 THEN [Chiusura] END) AS [Chiusura],
  SUM(Volume) Volume
  /*MAX(CASE WHEN RN_DESC=1 THEN [DataOra] END) AS ChiusuraDataOra*/
 FROM cte
 GROUP BY Simbolo,StartRange
 ORDER BY AperturaDataOra

在 microsoft sql 2005 2008 中完美运行我想在 mySQL 中使用这个查询。

4

0 回答 0