我有以下程序,JOIN没有工作:
CREATE PROCEDURE afficherConsomVspVM
(@start DATE, @end DATE, @lun NVARCHAR (250), @splitLun NVARCHAR (250) )
AS
SET NOCOUNT ON
CREATE TABLE dbo.#temp (dateCollecte DATE, lun NVARCHAR (250), VMUsed FLOAT)
INSERT INTO dbo.#temp (dateCollecte, lun, VMUsed)
(SELECT dateCollecte, lun = @lun, VMUsed = (capacity - freeSpace)/1024
FROM dbo.VmwareDatastore
WHERE dateCollecte BETWEEN @start AND @end
AND lun LIKE '________________________________________' + @splitLun
UNION
SELECT dateCollecte, lun = @lun, VMUsed = usedSpace
FROM dbo.SunZpool
WHERE dateCollecte BETWEEN @start AND @end
AND id IN (SELECT lunId
FROM dbo.SunZpool_Luns
WHERE name LIKE '_____________________________' + @splitLun + '%'))
SELECT
t1.dateCollecte,
VspUsed = MAX(t1.consumedCapacityInKB),
total = MAX(t1.capacityInKB)
FROM
dbo.Vsp t1
FULL JOIN
dbo.#temp t2 ON t1.dateCollecte = t2.dateCollecte
WHERE
t1.dateCollecte BETWEEN @start AND @end
AND displayName = @lun
GROUP BY
t1.dateCollecte
DROP TABLE dbo.#temp
SET NOCOUNT OFF
我知道在临时表#temp中正确插入了值(我已经测试了该部分代码并且它有效)。在调用该过程时,我只得到最后一个SELECT
,好像#temp是空的(它不是)。
为什么JOIN
声明不起作用?
仅供参考,我也尝试了LEFT
,RIGHT
,FULL OUTER
和OUTER JOIN
。