MSSQL查询,无法从Select中获得正确的结果

时间:2017-11-03 10:26:51

标签: sql-server

亲爱的聪明人,然后我,

我遇到了从我在SQL数据库中的VIEW收集数据的问题。

当我运行以下查询时:

SELECT
ref_aanhefinformeel, voornaam, tussenvoegsel, achternaam, ref_afdeling,
ref_locatie, ref_plaats1, functie, email, isnull(telefoon, mobiel) as telefoon,
personeelsnr,
CASE
    WHEN geslacht ='1' THEN 'Man'
    ELSE
         CASE WHEN geslacht ='2' THEN 'Vrouw'
         END
    END as Geslacht
FROM VW_telefoonboek where achternaam = 'hovens'

它返回以下错误: 列名称“ref_plaats1”无效。列名称“ref_locatie”无效。列名称“ref_afdeling”无效。列名称'ref_aanhefinformeel'无效。

这很奇怪,因为当我从同一个视图中选择*时,我确实从colomns获得了我需要的数据,当我定义它们时数据不会弹出。 Labels and Columns on the VIEW

enter image description here

我做错了吗?

2 个答案:

答案 0 :(得分:2)

当你说'标签'时,你的意思是别名吗?如在

CREATE VIEW VW_telefoonboek AS 
SELECT ref_aanhefinformeel AS Aanhefinformeel,
..etc
FROM UnderlyingTable

(在OP添加结果图片后编辑) 在这种情况下,当你从视图中选择时,你必须使用别名,即

SELECT
Aanheinformeel,
Achternaam,
Voornaam,
Functie,
Afdeling,
Personeelsnr,
Locatie_code,
Mobiel,
Tussenvoegsel,
Vestiging,
Email,
Geslacht,
Telefoon,
Plaats
FROM VW_telefoonboek

答案 1 :(得分:2)

当你跑步时:

SELECT * FROM yourview

结果是列中包含的值列表。从屏幕截图中您可以看到两列,第一列名为标签,第二列名为 Kolom

您尝试在SELECT列中显示不存在的内容。

您的查询:

SELECT
ref_aanhefinformeel, voornaam, tussenvoegsel, achternaam, ref_afdeling,
ref_locatie, ref_plaats1, functie, email, isnull(telefoon, mobiel) as 
telefoon,
personeelsnr,
CASE
    WHEN geslacht ='1' THEN 'Man'
    ELSE
    CASE WHEN geslacht ='2' THEN 'Vrouw'
    END
END as Geslacht
FROM VW_telefoonboek where achternaam = 'hovens'

这些字段:

ref_aanhefinformeel, voornaam, tussenvoegsel, achternaam, ref_afdeling,
ref_locatie, ref_plaats1, functie, email, isnull(telefoon, mobiel) as 
telefoon,
personeelsnr,
你的观点中不存在