私はWith As
ステートメントを2つのテーブルで使用し、それぞれから2つの列を返します。各クエリは、それ自体で正常に動作します。データがWhere
句を満たす両方のテーブルにある場合、正常に動作します。しかし、1つのテーブルがwhere
句に合致するものがなく、もう1つのテーブルが空のリターンを取得した場合。それは内部のwhere節が他のテーブルに影響を与えないようですが、私が間違っていることはわかりません。私は何が必要だと思うSQL Server 2012テーブルがある場合、1つのテーブルが空の場合は何も返しません。
;WITH Issue AS
(
SELECT
I.[Title] as [Issue],
dbo.udf_StripHTML([Discussion]) as Discussion
FROM
[PSMADO].[dbo].[MSP_EpmProject_UserView] AS P
JOIN
[psmado].[dbo].[MSP_WssIssue_OlapView] AS I ON I.[projectUID] = P.[projectUID]
WHERE
I.[status] LIKE '%Active%'
AND I.[Category] LIKE '%Factors%'
AND p.[Workstream] LIKE 'PSO'
), Risk AS
(
SELECT
I.[Title] as [Risk],
dbo.udf_StripHTML([MitigationPlan]) AS Mitigation
FROM
[PSMADO].[dbo].[MSP_EpmProject_UserView] AS P
JOIN
[psmado].[dbo].[MSP_WssRisk_OlapView] AS I ON I.[projectUID] = P.[projectUID]
WHERE
I.[status] LIKE '%Active%'
AND I.[Category] LIKE '%Factors%'
AND p.[Workstream] LIKE 'PSO'
)
SELECT *
FROM Issue, Risk
厥が必要です。あなたは 'Outer Join'を必要とし、サンプルデータと予想される結果を追加します。また、結果を最後にクロス結合させるのはなぜですか? –
[古いスタイルのJOINを使用した習慣が悪い](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins。 aspx) - ANSI - ** 92 ** SQL標準(** 25年**前)のold * style *カンマ区切りのテーブル*スタイルのリストが*適切な* ANSI 'JOIN'構文に置き換えられました。使用はお勧めしません –