Sql server 2008 从sql server 2008中声明的表中删除重复项

Sql server 2008 从sql server 2008中声明的表中删除重复项,sql-server-2008,Sql Server 2008,我已经在sql server 2008中创建了一个查询。当我运行此查询时,我找到了重复的记录。我为解决方案寻找了删除重复的记录,但我没有找到正确的答案 我的问题是 DECLARE @table_proposal TABLE ( applicationno NVARCHAR(200) ,sname NVARCHAR(200) ,gender NVARCHAR(50) ,annual_income NVARCH

我已经在sql server 2008中创建了一个查询。当我运行此查询时,我找到了重复的记录。我为解决方案寻找了删除重复的记录,但我没有找到正确的答案

我的问题是

DECLARE @table_proposal TABLE (
            applicationno NVARCHAR(200)
           ,sname NVARCHAR(200)
           ,gender NVARCHAR(50)
           ,annual_income NVARCHAR(200)
           ,period NVARCHAR(200)
           ,monthly NVARCHAR(200)
           ,scholarshipamt NVARCHAR(200)
           ,book NVARCHAR(200)
           ,totalamt NVARCHAR(200)
           ,bank NVARCHAR(200)
           ,serialno NUMERIC(20)
        )

INSERT INTO @table_proposal
  (
    applicationno
   ,sname
   ,gender
   ,annual_income
   ,period
   ,monthly
   ,scholarshipamt
   ,book
   ,totalamt
   ,bank
   ,serialno
  )(
       SELECT tspr.student_code
             ,First_Name + ' ' + Middle_Name + ' ' + Last_Name AS NAME
             ,Gender_Code
             ,tsam.Scholarship_Amount
             ,Academic_Year_Code
             ,tsam.Scholarship_Amount  AS monthly
             ,tsed.Scholarship_Amount
             ,tsam.Amount_for_books    AS book
             ,tsed.Scholarship_Amount
             ,'AC - ' + CAST(Account_No AS VARCHAR(20)) + ' / ' + Bank_Name
             ,ROW_NUMBER() OVER(ORDER BY tspr.student_code)
       FROM tbl_Student_Personal_Registration tspr
       INNER
       JOIN tbl_Student_Educational_Details tsed    ON  tspr.Student_Code = tsed.Student_Code
       INNER
       JOIN tbl_Proposal_Detail tpd ON  tpd.Student_Code = tspr.Student_Code 
       INNER JOIN   tbl_Scholarship_Amount_Master tsam  ON  tspr.Hotellers = 
       tsam.Hosteller
                   AND tsam.Gender = tspr.Gender_Code
                   AND tsam.Category_Code = tspr.Category_Code
       WHERE  tpd.Proposal_Id = 'N/1/CG0120G001/B/13/01'
   )
SELECT applicationno
      ,sname
      ,gender
      ,annual_income
      ,period
      ,monthly
      ,scholarshipamt
      ,book
      ,totalamt
      ,bank
      ,serialno
      ,COUNT(applicationno)
FROM    @table_proposal
GROUP BY
       applicationno
      ,sname
      ,gender
      ,annual_income
      ,period
      ,monthly
      ,scholarshipamt
      ,book
      ,totalamt
      ,bank
      ,serialno

你能试试下面的查询吗

DECLARE @table_proposal TABLE (
            applicationno NVARCHAR(200)
           ,sname NVARCHAR(200)
           ,gender NVARCHAR(50)
           ,annual_income NVARCHAR(200)
           ,period NVARCHAR(200)
           ,monthly NVARCHAR(200)
           ,scholarshipamt NVARCHAR(200)
           ,book NVARCHAR(200)
           ,totalamt NVARCHAR(200)
           ,bank NVARCHAR(200)
        )

INSERT INTO @table_proposal
  (
    applicationno
   ,sname
   ,gender
   ,annual_income
   ,period
   ,monthly
   ,scholarshipamt
   ,book
   ,totalamt
   ,bank
  )(
       SELECT tspr.student_code
             ,First_Name + ' ' + Middle_Name + ' ' + Last_Name AS NAME
             ,Gender_Code
             ,tsam.Scholarship_Amount
             ,Academic_Year_Code
             ,tsam.Scholarship_Amount  AS monthly
             ,tsed.Scholarship_Amount
             ,tsam.Amount_for_books    AS book
             ,tsed.Scholarship_Amount
             ,'AC - ' + CAST(Account_No AS VARCHAR(20)) + ' / ' + Bank_Name

       FROM tbl_Student_Personal_Registration tspr
       INNER
       JOIN tbl_Student_Educational_Details tsed    ON  tspr.Student_Code = tsed.Student_Code
       INNER
       JOIN tbl_Proposal_Detail tpd ON  tpd.Student_Code = tspr.Student_Code 
       INNER JOIN   tbl_Scholarship_Amount_Master tsam  ON  tspr.Hotellers = 
       tsam.Hosteller
                   AND tsam.Gender = tspr.Gender_Code
                   AND tsam.Category_Code = tspr.Category_Code
       WHERE  tpd.Proposal_Id = 'N/1/CG0120G001/B/13/01'
   )
SELECT applicationno
      ,sname
      ,gender
      ,annual_income
      ,period
      ,monthly
      ,scholarshipamt
      ,book
      ,totalamt
      ,bank
      ,,ROW_NUMBER() OVER(ORDER BY applicationno) AS serialno
      ,COUNT(applicationno)
FROM    @table_proposal
GROUP BY
       applicationno
      ,sname
      ,gender
      ,annual_income
      ,period
      ,monthly
      ,scholarshipamt
      ,book
      ,totalamt
      ,bank
      ,serialno

您能否提供示例/简化数据集?Alos,在消除重复项以说明哪些字段构成行的自然主键唯一标识符时,这一点很重要。