0

我基本上想要做的是一次触发多个 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

这是为了利用临时表来拆分几个月的结果,即使这些月份没有数据。

它在查询分析器中运行良好。

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

4

1 回答 1

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
于 2013-09-19T12:03:25.897 回答