0

是否可以在 sql 2000 中创建复合键

code    id
abc      1
abc      2
abc      3
def      1
def      2
ghi      1

其中 id 在每次更改代码时重新开始计数。我需要通过创建表或其他 SELECT 语句技巧来使编号完全相同。

如何在 sql server 2000 中执行此操作

需要查询帮助

4

2 回答 2

2

这是在运行时检索此数据的一种方法,而不必将其实际存储在表中,尝试和维护起来非常麻烦。我在这里使用#temp 表,但您可以假装#a是您的永久表。照原样,这将支持多达 256 个重复项。如果需要更多,可以调整。

CREATE TABLE #a(code VARCHAR(32));

INSERT #a SELECT 'abc'
UNION ALL SELECT 'abc'
UNION ALL SELECT 'abc'
UNION ALL SELECT 'def'
UNION ALL SELECT 'def'
UNION ALL SELECT 'ghi';
GO

SELECT x.code, id = y.number FROM 
(
  SELECT code, maxid = COUNT(*) FROM #a GROUP BY code
) AS x
CROSS JOIN 
(
  SELECT DISTINCT number FROM master..spt_values
  WHERE number BETWEEN 1 AND 256
) AS y
WHERE x.maxid >= y.number;

DROP TABLE #a;
于 2012-07-18T12:32:22.003 回答
0

你可以试试这个

INSERT INTO TABLENAME (code, id) VALUES( 'code',
(Select ISNULL(MAX(id), 0) FROM TableName where code = 'code')+1)
于 2012-07-18T12:04:15.017 回答