MSSQL内部连接WHERE子句

MSSQL内部连接WHERE子句,sql,sql-server,inner-join,Sql,Sql Server,Inner Join,下面的SQL查询查找符合特定要求的订单,然后使用发票行创建一个新的订单InvNum,在这个阶段它只创建了基本信息 DECLARE @gid varchar(50) SELECT @gid = newid() INSERT INTO InvNum (DocType,DocState,AccountID,ucIDSOrdTempInvID) SELECT 4,1,AccountID,@gid FROM (SELECT DISTINCT AccountID FROM InvNum

下面的SQL查询查找符合特定要求的订单,然后使用发票行创建一个新的订单InvNum,在这个阶段它只创建了基本信息

DECLARE @gid varchar(50) SELECT @gid = newid()

INSERT INTO InvNum (DocType,DocState,AccountID,ucIDSOrdTempInvID) 
SELECT 4,1,AccountID,@gid 
FROM (SELECT DISTINCT AccountID 
      FROM InvNum 
      WHERE ubIDSOrdConsolOrder = '1' 
      AND DocState = '1' 
      AND DocType <> '5') A


INSERT INTO _btblInvoiceLines (iInvoiceID, iStockCodeID, fQuantity) 
SELECT AutoIndex, iStockCodeID, qty 
FROM (SELECT AutoIndex, iStockCodeID, qty 
      FROM (SELECT AutoIndex,AccountId,ucIDSOrdTempInvID 
            FROM InvNum
            WHERE ucIDSOrdTempInvID = @gid) T1 
      INNER JOIN (SELECT B.iStockCodeID,A.AccountID,sum(B.fQuantity) AS qty 
                  FROM (SELECT * 
                        FROM  InvNum  
                        WHERE ubIDSOrdConsolOrder = '1' 
                        AND DocState = '1' 
                        AND DocType <> '5') A    
                  INNER JOIN (SELECT * 
                              FROM _btblInvoiceLines) B ON A.AutoIndex = B.iInvoiceID 
                  GROUP BY iStockCodeID, AccountID) T2 ON T1.AccountId = T2.AccountID) T3
我不知道如何制作D1。*从添加到新订单D2中的上一份原始文档中提取信息。我相信我能做到这一点的唯一方法是使用以下SELECT DISTINCE AccountID,UBIDSORDCONSOLORDFROM InvNum,其中ubIDSOrdConsolOrder='1'和DocState='1'以及DocType'5',但我不知道如何正确地将其输入。对不起,如果这是一个简单的问题,但我已经寻找并试图解决这个问题两天了,现在没有任何运气

谢谢。

我的内部联接顺序错误。我执行了以下操作,现在可以正常工作:

SELECT D1.*
FROM (SELECT DISTINCT AccountID, AutoIndex FROM InvNum WHERE ubIDSOrdConsolOrder = '1' AND DocState = '1' AND DocType <> '5') A1

  INNER JOIN (SELECT * FROM _btblInvoiceLines) D1 ON A1.AutoIndex = D1.iInvoiceID----

  INNER JOIN (SELECT max(idInvoiceLines) as idInvoiceLines, iStockCodeID FROM _btblInvoiceLines GROUP BY iStockCodeID) I1  ON D1.iStockCodeID = I1.iStockCodeID

  INNER JOIN (SELECT * FROM _btblInvoiceLines I1 INNER JOIN (select accountid,autoindex,ucIDSOrdTempInvID FROM InvNum where ucIDSOrdTempInvID = @gid) I2 ON I1.iInvoiceID=I2.AutoIndex) D2 ---- @gid
ON D1.iStockCodeID=D2.iStockCodeID

WHERE _btblInvoiceLines.idInvoiceLines = D2.idInvoiceLines

您能在语句和选项卡之间使用一些新行格式化代码吗?我想这会增加你获得aswer的机会。谢谢artm,我会试一试的。很抱歉第一次问您使用哪家SQL供应商?Microsoft SQL Server 2012
SELECT D1.*
FROM (SELECT DISTINCT AccountID, AutoIndex FROM InvNum WHERE ubIDSOrdConsolOrder = '1' AND DocState = '1' AND DocType <> '5') A1

  INNER JOIN (SELECT * FROM _btblInvoiceLines) D1 ON A1.AutoIndex = D1.iInvoiceID----

  INNER JOIN (SELECT max(idInvoiceLines) as idInvoiceLines, iStockCodeID FROM _btblInvoiceLines GROUP BY iStockCodeID) I1  ON D1.iStockCodeID = I1.iStockCodeID

  INNER JOIN (SELECT * FROM _btblInvoiceLines I1 INNER JOIN (select accountid,autoindex,ucIDSOrdTempInvID FROM InvNum where ucIDSOrdTempInvID = @gid) I2 ON I1.iInvoiceID=I2.AutoIndex) D2 ---- @gid
ON D1.iStockCodeID=D2.iStockCodeID

WHERE _btblInvoiceLines.idInvoiceLines = D2.idInvoiceLines