如何使用ODBC / SQL-Server执行/打开多个SQL语句

时间:2013-09-19 11:56:56

标签: sql-server delphi odbc

我基本上要做的是一次性触发多个SQL语句。 只要它们不返回结果,这样就可以正常工作。

我想要做的是让临时表填充它并将其加入现有数据:

CREATE TABLE #JaarMaandTable(jaarm int,maandm int)
INSERT INTO #JaarMaandTable (jaarm,maandm) VALUES (2013,9), (2013,10), (2013,11)

SELECT jaarm,maandm, kr.* 
FROM  #JaarMaandTable jm 
LEFT JOIN (
   SELECT  DATEPART(Month, datum) as maand, DATEPART(Year, datum) as jaar ,count(*) as regels mytable 
   FROM agenda 
   WHERE datum >= '20130901' 
   AND datum <= '20131130' 
   GROUP BY DATEPART(Year, datum), DATEPART(Month, datum)
)kr  ON jm.jaarm = kr.jaar AND jm.maandm = kr.maand ORDER BY jaarm, maandm

这是为了利用临时表将结果分成几个月,即使这几个月没有数据。

它在查询分析器中工作正常。

当我尝试在此查询中使用“open”时,它告诉我它不会返回游标。 当我“execsql”它,它不会返回结果。 当我将其拆分时,它会立即忘记#temptable。

1 个答案:

答案 0 :(得分:4)

您可以使用with语句编写查询,以避免需要临时表:

with JaarMaandTable(jaarm int,maandm int) as (
       select 2013, 9 union all
       select 2013, 10 union all
       select 2013, 11
      )
SELECT jaarm,maandm, kr.* 
FROM  JaarMaandTable jm 
LEFT JOIN (
   SELECT  DATEPART(Month, datum) as maand, DATEPART(Year, datum) as jaar ,count(*) as regels mytable 
   FROM agenda 
   WHERE datum >= '20130901' 
   AND datum <= '20131130' 
   GROUP BY DATEPART(Year, datum), DATEPART(Month, datum)
)kr  ON jm.jaarm = kr.jaar AND jm.maandm = kr.maand ORDER BY jaarm, maandm