0

抱歉这个愚蠢的问题,但我对 SQL 很陌生,我正在尝试做一些非常简单的事情。我创建了一个由 3 个表组成的视图,并且效果很好。但是,我要求某些字段使用某种格式的格式。我正在使用 SQL Server Management Studio GUI 创建此视图。

我在视图中有 2 列需要验证:GenderDOB

性别包含“M”、“F”或空白,我需要在视图中将其更改为输出'Male''Female'

DOB包含一个未格式化的日期字符串,我需要将其格式化为DD/MM/YYYY.

我应该在哪里创建这个验证,为了把我所有的卡片都放在桌子上,这里是创建视图脚本:

CREATE VIEW [dbo].[PMIPatient]
AS
   SELECT     
      dbo.refPasPatientRec8Master.Patient_Internal_number AS HospitalNumber, 
      dbo.refPasPatientRec1Master.[H+C_Number] AS NHSNumber, 
      dbo.refPasPatientRec1Master.Patient_Title AS Salutation, 
      dbo.refPasPatientRec1Master.Surname, 
      dbo.refPasPatientRec1Master.Forenames AS Forename, 
      dbo.refPasPatientRec1Master.Sex_Code AS Gender, 
      dbo.refPasPatientRec1Master.Date_of_Birth AS Dob, 
      dbo.refPasPatientRec1Master.Date_of_Death AS Dod, 
      dbo.refPasPatientRec1Master.Address_Line_1 AS Address1, 
      dbo.refPasPatientRec1Master.Address_Line_2 AS Address2, 
      dbo.refPasPatientRec1Master.Address_Line_3 AS Address3, 
      dbo.refPasPatientRec1Master.Address_Line_4 AS Address4, 
      dbo.refPasPatientRec1Master.[Postcode/Pseudo_postcode] AS Postcode, 
      dbo.refPasPatientRec8Master.Patients_Phone_Number AS Telephone1, 
      dbo.refPasPatientRec39Master.Work_Telephone_Number AS Telephone2, 
      dbo.refPasPatientRec1Master.GP_Code AS GPGMCode, 
      dbo.refPasPatientRec1Master.Death_Indicator AS deceasedFlag
FROM         
      dbo.refPasPatientRec1Master 
INNER JOIN
      dbo.refPasPatientRec39Master ON dbo.refPasPatientRec1Master.Patient_Internal_number = dbo.refPasPatientRec39Master.Patient_Internal_number 
INNER JOIN
      dbo.refPasPatientRec8Master ON dbo.refPasPatientRec1Master.Patient_Internal_number = dbo.refPasPatientRec8Master.Patient_Internal_number
4

2 回答 2

2

所有这些都假设您使用的是 MS-SQL!

要更改 Sex_Code 的返回值,请使用CASE语句。有关更多信息,请参阅此链接

改变这个:

dbo.refPasPatientRec1Master.Sex_Code AS Gender

对此:

CASE dbo.refPasPatientRec1Master.Sex_Code
     WHEN 'M' THEN 'Male' 
     WHEN 'F' THEN 'Female'
     ELSE 'Unknown'
END AS Gender

要格式化 Date_of_Birth 值,然后使用该CONVERT方法将其转换为NVARCHAR具有指定样式(103 参数)的值。有关更多详细信息,请参阅此链接

改变这个:

dbo.refPasPatientRec1Master.Date_of_Birth AS Dob

至:

CONVERT(NVARCHAR(10), dbo.refPasPatientRec1Master.Date_of_Birth, 103) AS Dob
于 2012-08-16T11:06:49.097 回答
1

使用 CASE 表达式将性别转换为您想要的形式。

使用带有适当字符格式数字的 CONVERT 函数将日期转换为特定数字,例如:

SELECT CONVERT(varchar(8), dbo.refPasPatientRec1Master.Date_of_Birth, 112) 

我不知道您的“SQL 管理工作室”是否允许您编辑单个选定的列表达式...

于 2012-08-16T11:11:47.997 回答