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