SQL - 使用视图语句和视图访问进行预定义

时间:2014-11-29 15:23:27

标签: sql-server

我们的想法是使用" view" -statement预定义Min和Max Funktion,然后组合这两个视图表并获得一个输出。 首先,收集每个部门(Abteilung)的最高和最低工资(Gehalt)。与他们的工人ID(Mitarbeiternummer)相结合,名字和姓氏都是Min和Max的字样,用于说明它的确切含义,最低工资或最高工资。

这里是完整的代码:

DROP VIEW IF EXISTS view_min_abteilung;
CREATE VIEW view_min_abteilung as (
    SELECT mi.abteilung, "min" AS ['Min Max'], MIN(mi.gehalt) AS Gehalt
       FROM mitarbeiter mi
       GROUP BY mi.abteilung
);

drop view if exists view_max_abteilung;
CREATE VIEW view_max_abteilung as (
    SELECT ma.abteilung, "max" AS ['Min Max'], MAX(ma.gehalt) AS Gehalt
       from mitarbeiter ma
       group by ma.abteilung
);

SELECT m.Mitarbeiternummer, m.Vorname, m.Name, mi.Abteilung, mi.['Min Max'], mi.Gehalt
   FROM view_min_abteilung mi, mitarbeiter m
   WHERE mi.abteilung = m.Abteilung and mi.Gehalt = m.Gehalt

UNION ALL

SELECT m.Mitarbeiternummer, m.Vorname, m.Name, ma.abteilung, ma.['Min Max'], ma.Gehalt
    FROM view_max_abteilung ma, mitarbeiter m
    WHERE ma.abteilung = m.Abteilung and ma.Gehalt = m.Gehalt

ORDER BY abteilung, minmax

现在,在由UNION语句组合的select语句中,我必须访问" Min Max" columm,这就是问题发生的地方,因为Min和Max之间的空间会产生2个函数。 我总是收到错误消息。

我试图用几种方法没有成功: mi。[' Min Max']和ma。[' Min Max'] 以及 mi。' Min Max'和马。' Min Max' 但没有运气

任何想法??

很抱歉,我没有正确解释自己

问候和感谢

1 个答案:

答案 0 :(得分:0)

请尝试写[Min Max]而不是['Min Max']。 顺便说一下,不需要两个单独的视图。您只需在一个视图中使用Min和Max。