So I`m trying to make a statistic view which counts various things like how many users are in table called “PACIENTAS” , how many doctors are in table “GYDYTOJAS” and it works.
x
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
/
Counts how many columns are in table
But I want to count only columns that fulfil a specified condition
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
/
When I write this code I get an error
ORA-00904: “PACIENTAS”: invalid identifier
I thinking maybe I need to write my condition in count parentheses but I don’t know how, I need ideas because I am stuck.
Advertisement
Answer
Do it like this
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
/