2014-04-23 33 views
2

你们可以指导我为什么这不起作用吗?SELECT INTO声明失败

SELECT AN.an_id, AN.an_name, 
    (SELECT TOP(1)ex_date 
     FROM upd_exam_headers 
     WHERE HS.an_id = AN.an_id 
     ORDER BY ex_date desc), 
     sum(ex_fee) 
INTO upd_nc_felines AS FS 
FROM upd_animals AS AN 
LEFT JOIN upd_exam_headers AS HS ON HS.an_id = AN.an_id 
LEFT JOIN upd_exam_details AS DS ON DS.ex_id = HS.ex_id 
WHERE an_type = 'cat' and an_status = 'NC' 
GROUP BY AN.an_id, AN.an_name; 

消息156,级别15,状态1,行中的关键字 'AS' 10 附近有语法错误。

+0

尝试'没有' AS FS' – Blorgbeard

+0

对象或列名称缺失或为空。对于SELECT INTO语句,请确认每列都有一个名称。对于其他语句,查找空的别名。别名定义为“”或[]是不允许的。将别名更改为有效的名称。 Msg 1038,Level 15,State 5,Line 1 –

+2

您的子查询和总和没有别名,所以SQL不知道将哪些列放入upd_nc_felines中。 – Blorgbeard

回答

3

错误消息说这意味着什么:)

INTO upd_nc_felines`添加一个别名sum(ex_fee)

1

试用一下这个,希望应该工作,

WITH TMP AS (
SELECT 
AN.an_id, AN.an_name, 
(SELECT TOP 1 ex_date   
FROM upd_exam_headers 
WHERE HS.an_id = AN.an_id 
ORDER BY ex_date desc) AS 'ex_date', 
sum(ex_fee) AS 'ex_fee' 

FROM upd_animals AS AN 
LEFT JOIN upd_exam_headers AS HS ON HS.an_id = AN.an_id 
LEFT JOIN upd_exam_details AS DS ON DS.ex_id = HS.ex_id 
WHERE an_type = 'cat' and an_status = 'NC' 
GROUP BY AN.an_id, AN.an_name; 

) 
SELECT * INTO 
upd_nc_felines 
FROM TMP