所以我正在尝试制作一个统计视图,该视图计算各种内容,例如名为"PACIENTAS"的表中有多少用户,表中有多少医生"GYDYTOJAS"并且它有效。
CREATE OR REPLACE FORCE VIEW "NEW" ("PACIENTU SKAIČIUS DUOMENŲ BAZĖJE", "PACIENTAI UŽSIREGISTRAVĘ VIZITUI", "LIGONINIU SKAICIUS", "GYDYTOJU SKAIČIUS", "ŠIO MENESIO REGISTRACIJOS") AS
SELECT(
SELECT COUNT(*) FROM PACIENTAS) AS VISIPACIENTAI,
(SELECT COUNT(*) FROM REGISTRACIJA) AS REGPACIENTAI,
(SELECT COUNT(*) FROM LIGONINE) AS VISOSLIGONINES,
(SELECT COUNT(*) FROM GYDYTOJAS) AS VISIGYDYTOJAI,
(SELECT COUNT(*) FROM REGISTRACIJA) AS REGISTRACIJA
FROM dual
/
计算表中的列数
但是我只想计算满足指定条件的列
CREATE OR REPLACE FORCE VIEW "NEW" ("PACIENTU SKAIČIUS DUOMENŲ BAZĖJE", "PACIENTAI UŽSIREGISTRAVĘ VIZITUI", "LIGONINIU SKAICIUS", "GYDYTOJU SKAIČIUS", "ŠIO MENESIO REGISTRACIJOS") AS
SELECT(
SELECT COUNT(*) FROM PACIENTAS) AS VISIPACIENTAI,
(SELECT COUNT(*) FROM REGISTRACIJA) AS REGPACIENTAI,
(SELECT COUNT(*) FROM LIGONINE) AS VISOSLIGONINES,
(SELECT COUNT(*) FROM GYDYTOJAS) AS VISIGYDYTOJAI,
(SELECT COUNT(*) FROM REGISTRACIJA) AS REGISTRACIJA
FROM dual
WHERE ASMENSKODAS > 10 //ASMENSKODAS is a column from PACIENTAS TABLE
/
当我编写此代码时,我收到一个错误
ORA-00904:"PACIENTAS":标识符无效
我想也许我需要在计数括号中写下我的条件,但我不知道如何,我需要想法,因为我被卡住了。
这样做
CREATE OR REPLACE FORCE VIEW "NEW" ("PACIENTU SKAIČIUS DUOMENŲ BAZĖJE", "PACIENTAI UŽSIREGISTRAVĘ VIZITUI", "LIGONINIU SKAICIUS", "GYDYTOJU SKAIČIUS", "ŠIO MENESIO REGISTRACIJOS") AS
SELECT(
SELECT COUNT(*) FROM PACIENTAS WHERE ASMENSKODAS > 10) AS VISIPACIENTAI,
(SELECT COUNT(*) FROM REGISTRACIJA) AS REGPACIENTAI,
(SELECT COUNT(*) FROM LIGONINE) AS VISOSLIGONINES,
(SELECT COUNT(*) FROM GYDYTOJAS) AS VISIGYDYTOJAI,
(SELECT COUNT(*) FROM REGISTRACIJA) AS REGISTRACIJA
FROM dual
//ASMENSKODAS is a column from PACIENTAS TABLE
/
如果您引用PACIENTAS
表中的列(即ASMENSKODAS
(,它必须对查询"可见",所以 - 也许你打算使用它,正如我在下面发布的那样。
此外,我强烈建议您不要像以前那样命名列。永远不要在 Oracle 中使用双引号,因为您每次都必须像创建视图时一样引用这些列,注意字母大小写、(太多(空格(单词之间(等。以简单的方式命名列;出于报告目的,请根据需要命名它们。
create or replace view new
(visipacientai, regpacientai, visosligonines, visigydytojai, registracija)
as
SELECT(
(SELECT COUNT(*) FROM PACIENTAS
WHERE ASMENSKODAS > 10
) AS VISIPACIENTAI,
--
(SELECT COUNT(*) FROM REGISTRACIJA) AS REGPACIENTAI,
(SELECT COUNT(*) FROM LIGONINE) AS VISOSLIGONINES,
(SELECT COUNT(*) FROM GYDYTOJAS) AS VISIGYDYTOJAI,
(SELECT COUNT(*) FROM REGISTRACIJA) AS REGISTRACIJA
FROM dual;