我不明白为什么 "it is not contained in either an aggregate function or the GROUP BY clause." 错误
I dont understand why "it is not contained in either an aggregate function or the GROUP BY clause." error
查询;
SELECT ch.CharID,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 '%]%'
AND inv.Slot < 7
查询工作正常,但是 ;
INSERT INTO ItemPoints (
CharID
, CharName16
, OptLevel
, ReqLevel1
, ItemClass
, TotalPoint
)
SELECT CharID
, CharName16
, SUM(OptLevel) AS OptLevel
, SUM(ReqLevel1) AS ReqLevel1
, SUM(ItemClass) AS ItemClass
, SUM(OptLevel) + SUM(ReqLevel1) + SUM(ItemClass) AS TotalPoint
FROM (
SELECT ch.CharID, 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 inv.Slot < 7
) tbl
GROUP BY CharName16
但是 sql 服务器给出了这个错误;
Column 'tbl.CharID' is invalid in the select list because it is not
contained in either an aggregate function or the GROUP BY clause.
我不明白这个错误,我该如何解决?
使用..
GROUP BY CharID,CharName16
然后尝试。
INSERT INTO ItemPoints (
CharID
, CharName16
, OptLevel
, ReqLevel1
, ItemClass
, TotalPoint
) SELECT ch.CharID, ch.CharName16, SUM(it.OptLevel), SUM(obj.ReqLevel1), SUM(item.ItemClass),
(SUM(it.OptLevel)+ SUM(obj.ReqLevel1) + SUM(item.ItemClass) ) total
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 inv.Slot < 7 group By ch.CharID, ch.CharName16
您必须将所有值添加到 group by
子句中,该子句在没有聚合函数的 select
子句中使用,因此您的分组依据必须是:
GROUP BY CharID,CharName16
查询;
SELECT ch.CharID,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 '%]%'
AND inv.Slot < 7
查询工作正常,但是 ;
INSERT INTO ItemPoints (
CharID
, CharName16
, OptLevel
, ReqLevel1
, ItemClass
, TotalPoint
)
SELECT CharID
, CharName16
, SUM(OptLevel) AS OptLevel
, SUM(ReqLevel1) AS ReqLevel1
, SUM(ItemClass) AS ItemClass
, SUM(OptLevel) + SUM(ReqLevel1) + SUM(ItemClass) AS TotalPoint
FROM (
SELECT ch.CharID, 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 inv.Slot < 7
) tbl
GROUP BY CharName16
但是 sql 服务器给出了这个错误;
Column 'tbl.CharID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
我不明白这个错误,我该如何解决?
使用..
GROUP BY CharID,CharName16
然后尝试。
INSERT INTO ItemPoints (
CharID
, CharName16
, OptLevel
, ReqLevel1
, ItemClass
, TotalPoint
) SELECT ch.CharID, ch.CharName16, SUM(it.OptLevel), SUM(obj.ReqLevel1), SUM(item.ItemClass),
(SUM(it.OptLevel)+ SUM(obj.ReqLevel1) + SUM(item.ItemClass) ) total
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 inv.Slot < 7 group By ch.CharID, ch.CharName16
您必须将所有值添加到 group by
子句中,该子句在没有聚合函数的 select
子句中使用,因此您的分组依据必须是:
GROUP BY CharID,CharName16