【发布时间】:2016-06-22 11:00:29
【问题描述】:
当我分别使用以下 2 个查询时,我会成功获得输出
查询 #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”附近的语法不正确。消息 102,第 15 级,状态 1,第 4 行
')' 附近的语法不正确。消息 102,第 15 级,状态 1,第 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;
这会导致另一组错误:
消息 102,第 15 级,状态 1,第 3 行
'=' 附近的语法不正确。消息 102,第 15 级,状态 1,第 5 行
')' 附近的语法不正确。消息 102,第 15 级,状态 1,第 8 行
'tab2' 附近的语法不正确。
【问题讨论】:
标签: sql sql-server tsql