如何更改并插入新的table?

How to change and insert into new table?

这是我的查询:

SELECT TOP 50 
    ch.CharName16, it.OptLevel, obj.ReqLevel1, item.ItemClass  
FROM 
    _Items as it            
LEFT JOIN 
    [dbo].[_Inventory] as inv ON it.ID64 = inv.ItemID   
LEFT JOIN 
    [dbo].[_Char] as ch ON inv.CharID = ch.CharID           
LEFT JOIN 
    [dbo].[_RefObjCommon] as obj ON it.RefItemID = obj.ID           
LEFT JOIN 
    [dbo].[_RefObjItem] as item ON obj.Link = item.ID           
LEFT JOIN 
    [dbo].[_BindingOptionWithItem] as adv ON it.ID64 = adv.nItemDBID            
WHERE 
    ch.CharName16 IS NOT NULL 
    AND CodeName128 NOT LIKE '%stone%' 
    AND CharName16 NOT LIKE '%]%'           
ORDER BY 
    it.OptLevel DESC, obj.ReqLevel1 DESC, item.ItemClass DESC,
    adv.nOptValue DESC

查询结果:

我想将这些添加到新的 table 但像这样:

我该怎么做?

您可以使用外部查询来包装您的查询,该查询执行必要的聚合,您需要将数据汇总到您想要的结果中(如果您删除前 50 个,则需要删除 ORDER BY)。然后使用聚合数据执行 INSERT。这样的东西应该可以正常工作。

INSERT INTO MyTable(
        CharName16
        , OptLevel
        , ReqLevel1
        , ItemClass
        , TotalPoint
        )
SELECT CharName16
        , SUM(OptLevel) AS OptLevel
        , SUM(ReqLevel1) AS ReqLevel1
        , SUM(ItemClass) AS ItemClass
        , SUM(OptLevel) + SUM(ReqLevel1) + SUM(ItemClass) AS TotalPoint
  FROM (
        SELECT TOP 50 ch.CharName16, it.OptLevel, obj.ReqLevel1, item.ItemClass  
          FROM _Items as it            
          LEFT JOIN [dbo].[_Inventory] as inv ON it.ID64 = inv.ItemID   
          LEFT JOIN [dbo].[_Char] as ch ON inv.CharID = ch.CharID           
          LEFT JOIN [dbo].[_RefObjCommon] as obj ON it.RefItemID = obj.ID           
          LEFT JOIN [dbo].[_RefObjItem] as item ON obj.Link = item.ID           
          LEFT JOIN [dbo].[_BindingOptionWithItem] as adv ON it.ID64 = adv.nItemDBID            
         WHERE ch.CharName16 IS NOT NULL 
           AND CodeName128 NOT LIKE '%stone%' 
           AND CharName16 NOT LIKE '%]%'           
       ) tbl
 GROUP BY CharName16
SELECT TOP 50  
    ch.CharName16, 
    Sum(it.OptLevel)as OptLevel, 
    Sum(obj.ReqLevel1)as ReqLevel1, 
    Sum(item.ItemClass) as ItemClass,
    Sum(SUM(it.OptLevel)+ SUM(obj.ReqLevel1)+ SUM(item.ItemClass)) as TotalPoint

 INTO NEWTABLE

FROM 
    _Items as it            
LEFT JOIN 
    [dbo].[_Inventory] as inv ON it.ID64 = inv.ItemID   
LEFT JOIN 
    [dbo].[_Char] as ch ON inv.CharID = ch.CharID           
LEFT JOIN 
    [dbo].[_RefObjCommon] as obj ON it.RefItemID = obj.ID           
LEFT JOIN 
    [dbo].[_RefObjItem] as item ON obj.Link = item.ID           
LEFT JOIN 
    [dbo].[_BindingOptionWithItem] as adv ON it.ID64 = adv.nItemDBID            
WHERE 
    ch.CharName16 IS NOT NULL 
    AND CodeName128 NOT LIKE '%stone%' 
    AND CharName16 NOT LIKE '%]%'           
ORDER BY 
    it.OptLevel DESC, obj.ReqLevel1 DESC, item.ItemClass DESC,
    adv.nOptValue DESC