我的存储过程有问题,当我运行时出现此错误:
ADO EROR:关键字“where”
附近的语法不正确
我希望显示2个文件计数,如果我有公司在2012年之前选择的区域
这是我的疑问:
ALTER PROCEDURE ProceduraCalculareAuto
AS
SELECT ФИРМА.НаимПредпр
FROM dbo.ФИРМА LEFT OUTER JOIN
dbo.АВТОМОБ ON dbo.АВТОМОБ.КодПредпр = dbo.ФИРМА.КодПредпр INNER JOIN
dbo.КАРНЕТ ON dbo.КАРНЕТ.КодПредпр = dbo.ФИРМА.КодПредпр
INNER JOIN
(SELECT Tegaci = COUNT
(CASE [КодПриц/Тягач]
WHEN 4 THEN [КодПриц/Тягач]
END),
Auto = COUNT
(CASE [КодПриц/Тягач]
WHEN 3 THEN [КодПриц/Тягач]
END)
FROM dbo.АВТОМОБ
GROUP BY dbo.АВТОМОБ.[КодПриц/Тягач] )
WHERE(dbo.КАРНЕТ.ДтВыдачи BETWEEN CONVERT(DATETIME, '2012-01-01 00:00:00',
102) AND CONVERT(DATETIME, '2012-12-31 00:00:00', 102))
GROUP BY ФИРМА.НаимПредпр
RETURN
答案 0 :(得分:7)
您缺少子查询的别名。在SQL Server中,每个派生表和子查询都需要一个别名。您还缺少ON
子句以将子查询加入到查询的其余部分:
SELECT ФИРМА.НаимПредпр
FROM dbo.ФИРМА
LEFT OUTER JOIN dbo.АВТОМОБ
ON dbo.АВТОМОБ.КодПредпр = dbo.ФИРМА.КодПредпр
INNER JOIN dbo.КАРНЕТ
ON dbo.КАРНЕТ.КодПредпр = dbo.ФИРМА.КодПредпр
INNER JOIN
(
SELECT Tegaci = COUNT
(CASE [КодПриц/Тягач]
WHEN 4 THEN [КодПриц/Тягач]
END),
Auto = COUNT
(CASE [КодПриц/Тягач]
WHEN 3 THEN [КодПриц/Тягач]
END)
FROM dbo.АВТОМОБ
GROUP BY dbo.АВТОМОБ.[КодПриц/Тягач]
) src
-- this needs an alias and it also needs a join condition.
on etc = src.
WHERE(dbo.КАРНЕТ.ДтВыдачи BETWEEN CONVERT(DATETIME, '2012-01-01 00:00:00',
102) AND CONVERT(DATETIME, '2012-12-31 00:00:00', 102))
GROUP BY ФИРМА.НаимПредпр
我猜测连接列,但我想你可能想要这个:
SELECT ФИРМА.НаимПредпр
FROM dbo.ФИРМА
LEFT OUTER JOIN dbo.АВТОМОБ
ON dbo.АВТОМОБ.КодПредпр = dbo.ФИРМА.КодПредпр
INNER JOIN dbo.КАРНЕТ
ON dbo.КАРНЕТ.КодПредпр = dbo.ФИРМА.КодПредпр
INNER JOIN
(
SELECT Tegaci = COUNT
(CASE [КодПриц/Тягач]
WHEN 4 THEN [КодПриц/Тягач]
END),
Auto = COUNT
(CASE [КодПриц/Тягач]
WHEN 3 THEN [КодПриц/Тягач]
END),
dbo.АВТОМОБ.[КодПриц/Тягач]
FROM dbo.АВТОМОБ
GROUP BY dbo.АВТОМОБ.[КодПриц/Тягач]
) src
-- this needs an alias and it also needs a join condition.
on dbo.АВТОМОБ.[КодПриц/Тягач] = src.[КодПриц/Тягач]
WHERE(dbo.КАРНЕТ.ДтВыдачи BETWEEN CONVERT(DATETIME, '2012-01-01 00:00:00',
102) AND CONVERT(DATETIME, '2012-12-31 00:00:00', 102))
GROUP BY ФИРМА.НаимПредпр