加入當我使用低於2個查詢分開我獲得成功輸出問題全外的SQL Server
查詢#1
DECLARE @ID VARCHAR(1000)
SET @ID = ''
SELECT @ID = @ID + CAST(int_ID AS VARCHAR(1000))
FROM MATRIX_RELATIONSHIP
SELECT COUNT(int_ID) [Count], YEAR(dt_5841_OF) [date]
FROM TRANS_IDENTIFICATIONS
WHERE smallint_209_ME = 4
AND CHARINDEX(CONVERT(VARCHAR, int_ID), ('''' + Replace((@ID),',',''',''') + '''')) > 0
GROUP BY YEAR(dt_5841_OF);
輸出:
Count | year
02 2016
查詢#2
SELECT
COUNT(*) [Count1], YEAR(dt_modifiedOn) [date]
FROM
MATRIX_RELATIONSHIP
GROUP BY
YEAR(dt_modifiedOn);
產量:
Count | year
02 2016
但是當我使用這兩個查詢形成full outer join
類似如下:
SELECT
tab1.Count, tab2.Count1, tab1.date
FROM
(DECLARE @ID VARCHAR(1000)
SET @ID = ''
SELECT @ID = @ID+CAST(int_ID AS VARCHAR(1000))
FROM MATRIX_RELATIONSHIP
SELECT COUNT(int_ID) [Count], YEAR(dt_5841_OF) [date]
FROM TRANS_IDENTIFICATIONS
WHERE smallint_209_ME = 4
AND CHARINDEX(convert(varchar,int_ID), ('''' + Replace((@ID),',',''',''') + '''')) > 0
GROUP BY YEAR(dt_5841_OF)) tab1
FULL OUTER JOIN
(SELECT COUNT(*) [Count1], YEAR(dt_modifiedOn) [date]
FROM MATRIX_RELATIONSHIP
GROUP BY YEAR(dt_modifiedOn)) tab2 ON tab1.date = tab2.date;
我得到這些錯誤:
消息156,級別15,狀態1,2號線
關鍵字'DECLARE'的語法不正確。Msg 102,Level 15,State 1,Line 4
')'附近的語法不正確。Msg 102,Level 15,State 1,Line 7
'tab2'附近的語法不正確。
預期結果
Count | Count1 | year
02 02 2016
編輯
我試圖把申報和設置查詢外面太多,但仍然存在的問題仍然存在
DECLARE @ID VARCHAR(1000) SET @ID=''
SELECT tab1.Count,tab2.Count1,tab1.date from
(SELECT @ID= @ID+CAST(int_ID AS VARCHAR(1000))
from MATRIX_RELATIONSHIP SELECT COUNT(int_ID)[Count],YEAR(dt_5841_OF)[date] FROM TRANS_IDENTIFICATIONS WHERE smallint_209_ME=4 and CHARINDEX(convert(varchar,int_ID), ('''' + Replace((@ID),',',''',''') + '''')) >
0 GROUP BY YEAR(dt_5841_OF)) tab1
FULL OUTER JOIN
(SELECT COUNT(*)[Count1],YEAR(dt_modifiedOn)[date]
FROM MATRIX_RELATIONSHIP GROUP BY YEAR(dt_modifiedOn)) tab2
ON tab1.date=tab2.date;
這將導致另一錯誤集:
Msg 102,Level 15,State 1,Line 3
'='附近的語法不正確。Msg 102,Level 15,State 1,Line 5
')'附近的語法不正確。Msg 102,Level 15,State 1,Line 8
'tab2'附近的語法不正確。
@SiddP同爲'選擇@ ID =' - 它不屬於完全加入。 –