2017-04-17 53 views
1
SELECT ROUND(K1,2) 
FROM (SELECT '5.66666' UNION ALL 
     SELECT '5.77777' UNION ALL 
     SELECT '5.88888' UNION ALL 
     SELECT '5.99999' UNION ALL 
     SELECT '6.66666' UNION ALL 
     SELECT '7.66666' UNION ALL 
     SELECT '8.66666' UNION ALL 
     SELECT '9.66666' UNION ALL 
     SELECT '9.55555' UNION ALL 
     SELECT '6.88888' AS K1) K 

错误说:Invalid Column name 'K1'为什么此查询不工作,说无效列名

回答

2

union [all]结构列别名来自第一查询,而不是最后一个。有移动你的别名,你应该确定:

SELECT ROUND(K1,2) 
FROM (SELECT 5.66666 AS K1 UNION ALL -- Here! 
     SELECT 5.77777 UNION ALL 
     SELECT 5.88888 UNION ALL 
     SELECT 5.99999 UNION ALL 
     SELECT 6.66666 UNION ALL 
     SELECT 7.66666 UNION ALL 
     SELECT 8.66666 UNION ALL 
     SELECT 9.66666 UNION ALL 
     SELECT 9.55555 UNION ALL 
     SELECT 6.88888) K 
+0

现在它说函数'Round是被错误的参数调用的'' –

+1

@AnkitBajpai参数的**数字**似乎是正确的,但是您的查询使用了字符串文字而不是数字文字。看到我编辑的答案。 – Mureinik

+0

Yupp现在正在工作。 –

0

的第一条记录给列名,那么它会采取相同的名称为休息的记录。

SELECT ROUND(K1,2) 
FROM (SELECT '5.66666' AS K1 UNION ALL 
     SELECT '5.77777' UNION ALL 
     SELECT '5.88888' UNION ALL 
     SELECT '5.99999' UNION ALL 
     SELECT '6.66666' UNION ALL 
     SELECT '7.66666' UNION ALL 
     SELECT '8.66666' UNION ALL 
     SELECT '9.66666' UNION ALL 
     SELECT '9.55555' UNION ALL 
     SELECT '6.88888') K 
+0

现在,它是说,函数'调用错误的参数是错误的''' –

0

给别名为第一列的第一行或第一列中的所有行 给别名:

SELECT ROUND(K1,2) 
    FROM 
    (
     SELECT '5.66666' AS K1 UNION ALL 
     SELECT '5.77777' AS K1 UNION ALL 
     SELECT '5.88888' AS K1 UNION ALL 
     SELECT '5.99999' AS K1 UNION ALL 
     SELECT '6.66666' AS K1 UNION ALL 
     SELECT '7.66666' AS K1 UNION ALL 
     SELECT '8.66666' AS K1 UNION ALL 
     SELECT '9.66666' AS K1 UNION ALL 
     SELECT '9.55555' AS K1 UNION ALL 
     SELECT '6.88888' AS K1 
    ) K 
+0

现在它的意思是说函数'Round是用错误的参数调用的。' –

+0

@ AnkitBajpai,检查你的查询。上面的查询工作正常。在这里发布你最后一次尝试的查询。 – Mansoor

相关问题