当前位置: 代码迷 >> Sql Server >> 弥补数据结构设计上的缺陷,数据关联配对有关问题
  详细解决方案

弥补数据结构设计上的缺陷,数据关联配对有关问题

热度:98   发布时间:2016-04-24 10:14:40.0
弥补数据结构设计上的缺陷,数据关联配对问题。
各位老师好,以下有两个表,在设计上有一定缺陷,现在想通过SQL语句的关联来弥补该缺陷。


CREATE TABLE #TMP_A
(
ID INT,
SALEID INT,
TENDER INT,
AMT NUMERIC(16,4)
)

INSERT INTO #TMP_A VALUES (1,123,2001,60)
INSERT INTO #TMP_A VALUES (2,123,2001,20)
INSERT INTO #TMP_A VALUES (3,123,2001,60)
INSERT INTO #TMP_A VALUES (4,123,2001,60)

CREATE TABLE #TMP_B
(
SALEID INT,
TENDER INT,
AMT NUMERIC(16,4),
MEMO1 NVARCHAR(500),
MEMO2 NVARCHAR(500)
)

INSERT INTO #TMP_B VALUES (123,2001,60,'C','D')
INSERT INTO #TMP_B VALUES (123,2001,60,'E','F')
INSERT INTO #TMP_B VALUES (123,2001,20,'C','D')
INSERT INTO #TMP_B VALUES (123,2001,60,'C','D')

SELECT * FROM #TMP_A
SELECT * FROM #TMP_B


以上两表在数据结构设计上表B缺少了与表A直接关联的ID字段。

现在需求是通过SQL语句补上表B中与表A相匹配的ID字段(通俗说就是在两表关联后加上ID字段),请各位支招,在此多谢。
------解决方案--------------------
b.saleid=a.saleid AND b.TENDER=a.TENDER AND b.AMT=a.AMT 这三列无法唯一标识一行,匹配A表的话会多出好多数据
------解决方案--------------------
SALEID INT,
    TENDER INT,
    AMT NUMERIC(16,4) 这三类有重复数据的话很难。