मैं PhraseVersion
. के लिए एक परिकलित कॉलम के साथ जाऊंगा , जो समान PhraseID
. के साथ पंक्तियों की गिनती लेगा और Id
वर्तमान पंक्ति से कम या उसके बराबर।
ऐसा करने के लिए, आपको वाक्यांश संस्करण की गणना करने के लिए एक यूडीएफ बनाना होगा:
CREATE FUNCTION dbo.GetPhraseVersion (
@PhraseId int,
@id int
)
RETURNS INT
AS
BEGIN
RETURN (
SELECT COUNT(*)
FROM T
WHERE PhraseId = @PhraseId
AND Id <= @id
)
END
GO
फिर, गणना किए गए कॉलम के साथ तालिका बनाएं:
CREATE TABLE T
(
id int identity(1,1),
PhraseId int,
PhraseVersion as dbo.GetPhraseVersion(PhraseId, id)
)
GO
अब परीक्षण के लिए - 4 रिकॉर्ड डालें:
INSERT INTO T (PhraseId) VALUES(1),(1),(1),(2)
चुनें:
SELECT *
FROM T
परिणाम:
id PhraseId PhraseVersion
1 1 1
2 1 2
3 1 3
4 2 1
आप रेक्सटेस्टर पर लाइव डेमो देख सकते हैं।