Sql server 通过GROUP BY和HAVING从一个表选择到另一个表

Sql server 通过GROUP BY和HAVING从一个表选择到另一个表,sql-server,Sql Server,我试图使用GROUP BY和HAVING将数据从一个临时表插入到另一个临时表中,但出现以下错误: 每个GROUP BY表达式必须至少包含一个非外部引用的列 以下是相关的代码行: SELECT '1200.005.032' AS GlCode, upd.Job AS Reference, Sum(upd.DiffValue) AS [Value], 'New Overhead Rate Change by $' + upd.RateDifference + ' Job: ' + upd.

我试图使用GROUP BY和HAVING将数据从一个临时表插入到另一个临时表中,但出现以下错误:

每个GROUP BY表达式必须至少包含一个非外部引用的列

以下是相关的代码行:

SELECT '1200.005.032' AS GlCode, upd.Job AS Reference, Sum(upd.DiffValue) AS [Value], 
    'New Overhead Rate Change by $' + upd.RateDifference + ' Job: ' + upd.Job AS Comment, upd.PostYear, upd.PostMonth, 'POSITIVE' as TranType
INTO #LabGenJournal
FROM #UpdLaborDetails upd
GROUP BY '1200.005.032', upd.Job, 'New Overhead Rate Change by $' + upd.RateDifference + 'Job: ' + upd.Job, upd.PostYear, upd.PostMonth
HAVING (((Sum(upd.DiffValue))<>0));

一种简单易读的方法是使用:

另一个,使用:


一种简单易读的方法是使用:

另一个,使用:


您正在按一个常量值“1200.005.032”进行分组,该值不是来自源表,因此是一个纯外部引用。请尝试以下方法:

SELECT
    '1200.005.032' AS GlCode,
    upd.Job AS Reference,
    Sum(upd.DiffValue) AS [Value], 
    'New Overhead Rate Change by $' + upd.RateDifference + ' Job: ' + upd.Job AS Comment,
    upd.PostYear,
    upd.PostMonth,
    'POSITIVE' as TranType
INTO #LabGenJournal
FROM #UpdLaborDetails upd
GROUP BY upd.Job, upd.RateDifference, upd.PostYear, upd.PostMonth
HAVING (Sum(upd.DiffValue)<>0);

您正在按一个常量值“1200.005.032”进行分组,该值不是来自源表,因此是一个纯外部引用。请尝试以下方法:

SELECT
    '1200.005.032' AS GlCode,
    upd.Job AS Reference,
    Sum(upd.DiffValue) AS [Value], 
    'New Overhead Rate Change by $' + upd.RateDifference + ' Job: ' + upd.Job AS Comment,
    upd.PostYear,
    upd.PostMonth,
    'POSITIVE' as TranType
INTO #LabGenJournal
FROM #UpdLaborDetails upd
GROUP BY upd.Job, upd.RateDifference, upd.PostYear, upd.PostMonth
HAVING (Sum(upd.DiffValue)<>0);
SELECT
    '1200.005.032' AS GlCode,
    upd.Job AS Reference,
    Sum(upd.DiffValue) AS [Value], 
    'New Overhead Rate Change by $' + upd.RateDifference + ' Job: ' + upd.Job AS Comment,
    upd.PostYear,
    upd.PostMonth,
    'POSITIVE' as TranType
INTO #LabGenJournal
FROM #UpdLaborDetails upd
GROUP BY upd.Job, upd.RateDifference, upd.PostYear, upd.PostMonth
HAVING (Sum(upd.DiffValue)<>0);