【问题标题】:Creating a view (virtual table) which display colums with particular requirements创建显示具有特定要求的列的视图(虚拟表)
【发布时间】:2019-12-11 09:15:06
【问题描述】:

所以我正在尝试制作一个统计视图来计算各种事物,例如“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
  /

Counts how many columns are in table

但我只想计算满足指定条件的列

   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”:标识符无效

我想也许我需要在括号中写下我的条件,但我不知道怎么写,我需要想法,因为我被卡住了。

【问题讨论】:

    标签: sql oracle view count where-clause


    【解决方案1】:

    这样做

    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
       /
    

    【讨论】:

      【解决方案2】:

      如果您要引用 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;
      

      【讨论】:

        猜你喜欢
        • 2013-05-06
        • 2023-04-06
        • 2012-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-04
        • 1970-01-01
        相关资源
        最近更新 更多