2016-03-31 23 views
1
CREATE TABLE tbl_Patient 
    (
    PatientID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, 
    LabControlID AS Cast(Right(Year(getDate()),4) as varchar(4)) +'-' + RIGHT('00000' + CAST(PatientID AS VARCHAR(5)), 5), 
    SequenceID AS "--Codes to display date--" 
    ,First_Name varchar(50) 
    ,Last_Name varchar(50) 
    ,Age int 
    ,Male bit 
    ,Female bit 
    , 
) 

Ay ve Gün - 00000 değerini görüntülemek istiyorum ve aşağıdaki örnekte bunu görüntüleyin.Tablo sütun sırasındaki tarihi görüntülemek istiyorum

SequenceID 
---------- 
Jan01-00001  
Jan01-00002 

Lütfen bildiriniz. Teşekkür: D

+0

Bunu neden yapmak istiyorsunuz? herhangi bir kullanım durumu? Bunu bilmeden, hesaplayabildiğim tek bir noktaya sahip olan sütun, bir tarih ve kimlik sütununa dayanır – FLICKER

+0

Yıllık kaç hasta? PatientID'in 100.000'e çarptığı zaman emekli olacak mıydınız? – HABO

cevap

7

Sen tablo yapısını tekrar düşünmek gerekir:

  1. Age saklanması doğrudan (her sene güncellenir) zordur. birthday'u kaydetmeli ve hesaplamalısınız.
  2. Neden 2 alan cinsiyet belirtir? Male bit ve Female bit. Kontrol kısıtlaması olmadan male 1 and female 1'u alabilirsiniz. Belki sadece isMale bit yeterli veya ihtiyaç varsa daha fazla değer içeren bir tablo olacaktır.
  3. LabControlID, GETDATE kullanıyor ve zamanı bağlıdır. Yıl değişecek zaman da değişecek.

SequenceId gelince siz FORMAT kullanabilirsiniz ve normal sütunu olarak date saklamak:

CREATE TABLE tbl_Patient 
(
    PatientID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, 
    my_date DATE, 
    SequenceID AS CONCAT(FORMAT(my_date,'MMMdd','en-US'),'-',FORMAT(PatientID,'0000#')) 
    -- ... 
); 

INSERT INTO tbl_Patient(my_date)VALUES ('2016-01-01'), ('2016-01-01'); 

SELECT * FROM tbl_Patient; 

LiveDemo

Çıktı:

╔═══════════╦═════════════════════╦═════════════╗ 
║ PatientID ║  my_date  ║ SequenceID ║ 
╠═══════════╬═════════════════════╬═════════════╣ 
║   1 ║ 01.01.2016 00:00:00 ║ Jan01-00001 ║ 
║   2 ║ 01.01.2016 00:00:00 ║ Jan01-00002 ║ 
╚═══════════╩═════════════════════╩═════════════╝ 
+0

Merhaba Efendim, buna nasıl dönüşebilirim? 1. Yaş Kaydı doğrudan zor (her yıl güncellemeniz gerekir). Doğum gününü saklamanız ve hesaplamanız gerekir. 2. Neden cinsiyet belirtmek için 2 alan var? Erkek bit ve dişi biti. Kontrol kısıtlaması olmadan, 1 erkek ve dişi 1 alabilirsiniz. Belki de sadece bir bit yeterli veya gerekirse daha fazla değerle arama tablosu olur. –

+1

@JaphetCompendioBatucan bu cevap sorununu çözerse, cevap olarak işaretleyin. Yani, seninle aynı problemi olan diğer insanlar cevabı bilebilirdi. Başka bir sorunuz varsa, yalnızca soruyu düzenleyin veya başka bir yayın oluşturun. Yorumda bir soru soruyorsanız, başkaları tarafından görülmesi zor – Mark

İlgili konular