【问题标题】:How to add an individual feild in the view如何在视图中添加单个字段
【发布时间】:2013-12-01 08:40:01
【问题描述】:

我正在尝试在 MS SQL 中创建一个连接两个表和一个单独字段的视图。 我已经完成了连接部分,但现在我想在此视图中添加一个新字段,该字段不在任何连接的表中。 所以任何人都知道我如何在视图中创建这个新字段。

【问题讨论】:

  • 这个附加字段将包含什么?一些静态值还是一些计算值,基于一些其他字段的值?
  • 这个附加字段是一个位值,用于检查特定记录的状态..
  • 你的意思是这个位值是根据两个表的连接记录来检查每条记录的状态吗?
  • 创建视图插槽为 SELECT Event.EventId、Event.eventName、examCenter.centerId、examCenter.centerName、slotTime.slotTimeId、slotTime.FromTime、slotTime.ToTime、slotTime.Dated、examCenter.noOfSeats、(活动位)作为活动 FROM ExamCenter INNER JOIN Event ON ExamCenter.eventId = Event.EventId INNER JOIN slotTime ON Event.EventId = slotTime.eventId
  • 我想在这个视图中添加一个 bit 类型的字段 ACTIVE...

标签: mysql asp.net sql sql-server


【解决方案1】:

如果需要,您可以显式命名每个字段,并根据需要使用 AS 为它们起别名。例如:

SELECT si.field1 as si_field1,
       si.field2 as si_field2,
       ind_data.field1 as ind_data_field1
  FROM sites_indexed as si
  LEFT JOIN individual_data as ind_data 
         ON si.id = ind_data.site_id 

然后您可以在结果集中引用别名。

【讨论】:

  • 我不是在询问 joins 中的别名......我的问题是完全不同的先生......
【解决方案2】:

如果您想为 ACTIVE 字段中的所有行设置默认值,请尝试此操作

CREATE VIEW Slots AS 
SELECT Event.EventId, 
Event.eventName, 
examCenter.centerId, 
examCenter.centerName, 
slotTime.slotTimeId, 
slotTime.FromTime, 
slotTime.ToTime, 
slotTime.Dated, 
examCenter.noOfSeats,
CAST(1 AS bit) AS Active 
FROM examCenter 
INNER JOIN Event 
ON examCenter.eventId = Event.EventId 
INNER JOIN slotTime ON Event.EventId = slotTime.eventId

如果ACTIVE 字段的值取决于某些条件,比如说

slottime.Dated => getdate()

那么,你需要更换

CAST(1 AS bit) AS Active

在上面的代码中,用

CAST(CASE WHEN slottime.Dated => getdate() THEN 1 ELSE 0 AS bit) AS ACTIVE

【讨论】:

  • 我想在这个视图中添加一个位类型的字段 ACTIVE...这个 ACTIVE 是一个新字段..它不在任何表中..
  • 答案已修改。 BIT数据类型的新字段ACTIVE在两个表中都不存在,是在运行时创建的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-16
  • 1970-01-01
相关资源
最近更新 更多