我需要顯示的月利率在Excel 2007中一組固定的管道使用MS查詢即使管道有它必須以這種方式顯示替代左連接
required output http://i42.tinypic.com/29j615.jpg
沒有月租率我已經使用SQL Server 2008 R2中的以下代碼完成了它。
SELECT P.Name AS [Pipeline Name],
PR.Id,
PR.[Name],
PH.[Value] AS Rate
FROM [GAS].[dbo].[Pipelinerate] PR
INNER JOIN Pipeline P
ON P.Id = PR.Pipelineid
LEFT OUTER JOIN [GAS].[dbo].[Pipelineratehistory] PH
ON PH.[Pipelinerateid] = PR.[Id]
AND (PH.[Month] = ? --Month
AND PH.[Year] = ?) --Year
WHERE (PR.[Id] IN (197, 198, 1, 2, 3, 5, 67, 68, 23))
AND ISNULL(PH.Deprecated, 'n') <> 'Y'
ORDER BY [Pipeline name],
PR.[Name]
當我嘗試做在MS查詢在Excel 2007,然後我得到我收到以下錯誤
[Microsoft][ODBC SQL Server Driver] Invalid Parameter Number
[Microsoft][ODBC SQL Server Driver] Invalid Descriptor Index
我發現通過試錯,如果我從ON
子句中刪除條件的參數並將其放在WHERE Clause
中,如下所示
SELECT P.Name AS [Pipeline Name],
PR.Id,
PR.[Name],
PH.[Value] AS Rate
FROM [GAS].[dbo].[Pipelinerate] PR
INNER JOIN Pipeline P
ON P.Id = PR.Pipelineid
LEFT OUTER JOIN [GAS].[dbo].[Pipelineratehistory] PH
ON PH.[Pipelinerateid] = PR.[Id]
WHERE (PR.[Id] IN (197, 198, 1, 2, 3, 5, 67, 68, 23))
AND (PH.[Month] = ? --Month
AND PH.[Year] = ?) --Year
AND ISNULL(PH.Deprecated, 'n') <> 'Y'
ORDER BY [Pipeline name],
PR.[Name]
代碼工作在MS查詢和給出的結果
actual output http://i42.tinypic.com/5qiog.jpg
在此輸出中沒有利率月供管道不顯示。因此這段代碼不起作用。因此,我試圖在這種情況下找到LEFT JOIN
的替代方案,以便使用MS Query在Excel中獲得所需的輸出。
協會
管道和PipelineRate - 可選一對多的關係
PipelineRate和PipelineRateHistory - 可選一對多的關係
任何人都可以提出其他建議左連接還是有辦法做到這一點?
PS:我無法使用存儲過程。我知道如何使用VBA來做到這一點。我需要做到這一點使用MS查詢
什麼是你的表的關聯? –
管道和PipelineRate之間的關聯是可選的一對多關係和PipelineRate和PipelineRateHistory之間的關聯也是可選的一對多關係 – Ram