2016-03-31 8 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 
    , 
) 

Ich mag Monat und Tag angezeigt werden - 00000 und im nachfolgenden Beispiel, wie diese angezeigt werden soll.Ich möchte in der Tabelle Spaltenreihenfolge Datum anzuzeigen

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

Bitte beraten. Danke: D

+0

Warum möchten Sie das tun? irgendein Anwendungsfall? ohne zu wissen, dass, Spalte berechnet ist die einzige Option, die ich vorschlagen kann, die auf einer Spalte Datum und Identität basiert – FLICKER

+0

Wie viele Patienten pro Jahr? Werden Sie im Ruhestand sein oder woanders, wenn "PatientID" 100.000 erreicht? – HABO

Antwort

7

Sie sollten Ihre Tabellenstruktur überdenken:

  1. Speichern Age direkt heikel ist (Sie werden es jedes Jahr aktualisieren). Sie sollten birthday speichern und berechnen.
  2. Warum 2 Felder Sex angeben? Male bit und Female bit. Ohne Checkbeschränkung könnten Sie erhalten. Vielleicht ist nur isMale bit ausreichend oder Nachschlagetabelle mit mehr Werten, falls erforderlich.
  3. LabControlID verwendet GETDATE und es ist zeitabhängig. Wenn sich das Jahr ändert, wird es sich auch ändern.

Was SequenceId könnten Sie FORMAT verwenden und speichern date als normale Spalte:

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

Ausgang:

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

Hallo Herr, wie kann ich in diesen ändern? 1. Das Alter direkt zu speichern ist schwierig (aktualisieren Sie es jedes Jahr). Sie sollten Geburtstag speichern und berechnen. 2. Warum 2 Felder Sex angeben? Männchen und Weibchen. Ohne Check-Constraint könnten Sie männlich 1 und weiblich 1 bekommen. Vielleicht ist nur isMale-Bit ausreichend oder Lookup-Tabelle mit mehr Werten, wenn nötig. –

+1

@JaphetCompendioBatucan Wenn diese Antwort Ihr Problem löst, markieren Sie es als Antwort. Also, andere Leute, die das gleiche Problem mit dir haben, würden die Antwort wissen. Wenn Sie eine andere Frage haben, bearbeiten Sie einfach Ihre Frage oder erstellen Sie einen anderen Beitrag. Wenn Sie in einem Kommentar eine Frage stellen, ist es schwer für andere sichtbar zu sein – Mark