2016-12-10 8 views
1

tblSampleという名前のテーブルがあります。カラムはID,PIDなどです。これらの2つの列を特定のパターンで自動的に生成したいと思います。例えば特定のパターンの列に自動生成された値を挿入する

ID  PID 
    ------ ------ 
    ABC001 PAB001 
    ABC002 PAB002 
    ABC003 PAB003 
    ABC004 PAB004 
    |  | 
    |  | 
    ABC999 PAB999 

あなたが見ることができるように、PIDID内のパターン 'ABC' と 'PAB' は同じです。これらのレコードをテーブルに自動的に挿入するにはどうしたらいいですか? 'ABC'または 'PAB'の後の3桁の範囲は001-999ですか?

答えて

3

私の提案は、1つのIDをテストIDとして列とその列のIDとPIDを使用して計算された他と以下のようにテーブル構造を作成することです:Pefectを働い

CREATE TABLE #tmpOne(testID INT IDENTITY (1,1), 
    ID AS ('ABC'+ (CASE WHEN len(testID) <=3 THEN CAST(RIGHT(0.001*testID, 3) AS VARCHAR) ELSE CAST(testID AS VARCHAR) END)), 
    Ename VARCHAR(20)) 

INSERT INTO #tmpOne(Ename) 
SELECT 'Test' 

SELECT * FROM #tmpOne 
+0

スーパーは、そんなに@Suraz –

1
CREATE TABLE #tt(ID VARCHAR(100),PID VARCHAR(100)) 
    GO 
    INSERT INTO #tt(ID,PID) 
    SELECT 'ABC'+RIGHT('000'+LTRIM(a.ID),3),'PAB'+RIGHT('000'+LTRIM(a.ID),3) FROM (
     SELECT ISNULL(MAX(CASE WHEN SUBSTRING(t.id,4,LEN(ID))> SUBSTRING(t.id,4,LEN(PID)) THEN SUBSTRING(t.id,4,LEN(ID)) ELSE SUBSTRING(t.id,4,LEN(PID)) END)+1,1) AS id 
     FROM #tt AS t 
    ) AS a 
    GO 999 
+0

ありがとうございました働いてくれてありがとう@Surazが非常にシンプルな答えを見てください –

関連する問題