如何找到MAX和MIN值,然后复制并插入无重复行

时间:2017-03-27 20:28:59

标签: sql sql-server tsql

考虑有三个表产品分类(PROD_CLASS),文档标题(DOC_H)和文档正文(DOC_B)以及下一个模式

   PROD_CLASS         DOC_H           DOC_B
CODE char(10) PK     DATE date        CODE_FK   FK related to PROD_CLASS PK
NAME char(60)        NUMBER int PK    QUANTITY
P_TYPE char(10)      TYPE int         PRICE
                                      P_TYPE
                                      NUMBER_FK  FK related to DOC_H

如何将没有重复的行(没有重复的产品名称(PROD_CLASS列名称))从DOC_B复制并插入DOC_B,以获取MAX编号(DOC_H表中的列)文档到具有MIN编号的文档(来自DOC_H的列)表)。

我的英语非常糟糕,所以我将尝试在示例中描述我的问题:

我有下一个表数据:

PROD_CLASS
CODE   NAME  P_TYPE
1      Beer  Light
2      Milk  Low-fat
3      Bread Boule

DOC_H
DATE         NUMBER   TYPE
01/01/2012     1        1
01/02/2012     2        1
01/03/2012     3        1

DOC_B
CODE_FK   QUANTITY PRICE P_TYPE  NUMBER_FK
1           100      5     Light     1
3           200      3     Boule     1
1           50       6     Light     2
1           25       5     Light     3
2           100      10    Low-fat   3
3           100      3     Boule     3

MAX编号的文档为#3,MIN编号的文档为#1。我需要将文档#3(带有MAX编号的doc)的名称不同的所有产品(行)复制到文档#1(带有MIN编号的doc)。

1 个答案:

答案 0 :(得分:0)

我认为你的意思是你不希望表'doc_b'中的条目具有重复条目,指向相同的Prod_Class& Doc_H作为'doc_b'中的另一个条目。如果是这种情况,您可以在doc_b表中的code_fk和number_fk上创建唯一索引。

  

在DOC_B上创建唯一索引ux_doc_b_code_fk_number_fk(code_fk,number_fk)