私のコードは、このSQL Server 2012のエラー:私はそれがエラーを返していない実行するために今とき表現することにより、各グループが
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[getprocbyproc]
@flg varchar(2),
@qaaprvdt char(8),
@dbo varchar(20),
@plantid char(1)
AS
DECLARE @dynamicSQL varchar(8000)
DECLARE @datemth char(6)
DECLARE @dateday char(2)
DECLARE @FXTIME char(4)
DECLARE @TBL varchar(20)
DECLARE @def varchar(20)
DECLARE @OUTDAT CHAR(20)
SET @datemth = substring(@qaaprvdt,1,6)
SET @dateday = substring(@qaaprvdt,7,2)
IF @flg = 'QA' AND @dbo = 'PRCDAILYQA'
BEGIN
SET @TBL = 'DAILYQA'
SET @OUTDAT = 'CO.QAAPRVDT'
END
IF @plantid = '1'
BEGIN
SET @def = "SQDPRCDEF1"
END
IF @flg = 'QA' AND @plantid = '1'
BEGIN
SET @dynamicSQL = 'insert into PrcdailyQA' +
'(process, seqno, qaamon, qaaday, orderno,
ingotno, theopcs, cwacc, pwacc, pwout,
procyld, prodyld, plantid, prodline) ' +
'(SELECT distinct(b.PROCNO), b.proseq, "' +
@datemth + '" , "' + @dateday +
'", a.orderno, a.ingotno, a.theopcs, a.cwacc, a.pwacc, a.pwout, a.COprocyld, a.COprodyld, a.plantid, a.prodline ' +
'FROM DailyQA a , SQDPRCDEF1 b ' +
'WHERE a.qaamon = ' + @datemth + ' and a.qaaday= ' + @DATEDAY + ' and a.plantid="1"' +
'GROUP BY b.procno, b.proseq, a.orderno, a.ingotno, a.theopcs, a.cwacc, a.pwacc, a.pwout, a.COprocyld, a.COprodyld, a.plantid, a.prodline) '
のようである外部参照ではない少なくとも1つの列が含まれている必要があります。私は、実行時にそれを実行しようとする。しかし、それは私がすでにこのhttp://www.sql-server-performance.com/2007/group-by-expression-contain-one-column-not-an-outer-reference/を参照し、エラーを返すも、文によってグループを変更しようと、エラー
Msg 164, Level 15, State 1, Line 1
Each GROUP BY expression must contain at least one column that is not an outer reference.
を返します。
助けてください!
SELECTステートメントに 'a.qaamon'と' a.qaaday'がありませんか? btw、私も動的SQLをしないことをお勧めします – Eric
あなたのコメントいただきありがとうございます。あなたのクエリを適用しましたが、実行時に同じエラーを返します。私の選択した声明が問題だと思いますか? – Afiq
私は動的にこれをストアドプロシージャで呼び出すために使用する必要があります。 @Eric – Afiq