【问题标题】:Displaying a different variable in VIEW sql在 VIEW sql 中显示不同的变量
【发布时间】:2017-04-16 10:08:28
【问题描述】:

创建视图:

 CREATE OR REPLACE VIEW viewHolidayID AS
    Select Package_Code, Description, Country_Visted
    FROM tbl_Holiday_Details

选择查询:

Select * from viewHolidayID
WHERE Country_Visted 

在 Country_Visted 列中显示国家列表。我正在努力做的事情,而不是单独展示这些国家,而是展示了整个大陆。 例如,“China”将显示“Asia”,“India”将显示“Asia”,“Italy”将显示“Europe”。我不希望它永久更改变量,只是在使用选择查询时显示

【问题讨论】:

  • 我们不知道你做了什么——你必须向我们展示你所做的事情的来源。
  • 贴出你的代码
  • Edit 您的问题并添加一些示例数据和基于该数据的预期输出。 Formatted 文本no screen shots
  • 另外:您使用的是哪个 DBMS?
  • 我改变了我希望更有意义的问题

标签: sql oracle select view


【解决方案1】:

这可能是一种“简单”的方式:

select Package_Code,
       Description,
       Country_Visted,
       case (Country_Visted)
         when 'Italy' then 'Europe'
         when 'India' then 'Asia'
         when 'China' then 'Asia'
       end as continent_visited
from tbl_Holiday_Details

但是,这是一种非常糟糕的方法,因为每次添加新国家/地区时都必须编辑代码以处理新值。

更好的解决方案可能是定义一个新表来存储每个国家/地区的大陆并将其加入您的表:

create table CountryContinent(country, continent) as
(
select 'Italy', 'Europe' from dual union all
select 'India', 'Asia' from dual union all
select 'China', 'Asia' from dual
)       

select Package_Code,
       Description,
       Country_Visted,
       c.continent
from tbl_Holiday_Details h
     inner join CountryContinent c
     on (h.Country_Visted = c.country)

这样你只需要在表格中出现新国家时在表格中添加一行,无需修改代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-16
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多