2011-11-02 91 views
-2

这是我的表我想打一个视图

CREATE TABLE [dbo].[StandardRoom](
[StandardRoomId] [char](4) NOT NULL, 
[RoomType] [varchar](15) NULL, 
[Rate] [smallmoney] NULL, 
[RoomDeparment] [varchar](15) NULL, 
[PlaceNb] [char](1) NULL, 
[PatientId1] [char](12) NULL, 
[PatientId2] [char](12) NULL, 
[PatientId3] [char](12) NULL, 
[PatientId4] [char](12) NULL, 
[BedId1] [char](4) NOT NULL, 
[BedId2] [char](4) NULL, 
[BedId3] [char](4) NULL, 
[BedId4] [char](4) NULL, 
[Full] [char](1) NOT NULL, 

所以我想创建一个视图来查看(BedId1如果PatientId1 = NULL),(BedId2如果PatientId2 = NULL) (BedId3如果PatientId3 = NULL ),(BedId4,如果PatientId4 =空)

感谢帮助我!

对于球员否决,因为他们认为这表不规范,是其真实的,但我有我的原因,我的数据库的情况下做到这一点...

+5

开始把你的表成至少第一范式。我不想留在拥有这些表格的数据库的医院 - 还有哪些维护不善? –

+3

阅读数据库规范化!!! –

+0

我知道,但我有桌子StandardRoom惠特4床和4病人,桌子半私人房间惠特2床和2病人和桌子私人房间惠特1床和1病人和finnaly床床主人身份证等,但我不konw当我可以正常化thoses ... – FrankSharp

回答

2
CREATE VIEW [dbo].[v_StandardRoom] 
AS 
select [StandardRoomId] , 
[RoomType] , 
[Rate] , 
[RoomDeparment] , 
[PlaceNb] , 
[PatientId1] , 
[PatientId2] , 
[PatientId3] , 
[PatientId4] , 
case when PatientId1 IS NULL then [BedId1] 
when PatientId2 IS NULL then [BedId2] 
when PatientId3 IS NULL then [BedId3] 
when PatientId4 IS NULL then [BedId4] 
end as BedId, 
[Full] 
from [dbo].[v_StandardRoom] 
+0

+1回答这个问题 - 而不仅仅是评论可怜的表结构=) – jadarnel27

+0

@ jadarnel27:有很多有效的理由有这样的结构。 – Icarus

+0

哦,我同意。我指的是所有不太有用的问题评论。 – jadarnel27

相关问题