数据库中已经有一个名为@ tmp0的对象

2020-08-18 21:14发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


 IF object_id('tempdb ..#Tmp0')不为空
 开始
    删除表#Tmp0
 结束
 创建表#Tmp0(DocEntry int,DocNum varchar(10),DocDate日期,DocStatus varchar(1),NumAtCard varchar(100),
 CardName varchar(100),GstRegNo varchar(50),Location varchar(100),数量小数(18,2),BaseAmt小数(18,2),TaxPercent小数(18,2),
 Cgst十进制(18,2),Sgst十进制(18,2),Igst十进制(18,2),UTGst十进制(18,2),其他十进制(18,2))
 

谢谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


 IF object_id('tempdb ..#Tmp0')不为空
 开始
    删除表#Tmp0
 结束
 创建表#Tmp0(DocEntry int,DocNum varchar(10),DocDate日期,DocStatus varchar(1),NumAtCard varchar(100),
 CardName varchar(100),GstRegNo varchar(50),Location varchar(100),数量小数(18,2),BaseAmt小数(18,2),TaxPercent小数(18,2),
 Cgst十进制(18,2),Sgst十进制(18,2),Igst十进制(18,2),UTGst十进制(18,2),其他十进制(18,2))
 

谢谢

付费偷看设置
发送
10条回答
太Q了
1楼 · 2020-08-18 21:34.采纳回答

嗨,

首先在测试数据库中添加以下存储过程,

USE [输入测试数据库]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

创建过程[dbo]。[TEST]

< p> @FromDate日期

@Todatedate

As

开始

SET @FromDate =(从OPCH Ta中选择Ta.Docdate 其中Ta.DocDate> ='[%0]')

SET @ToDate =(从OPCH Tb中选择Tb.Docdate,其中Tb.DocDate <='[%1]')

< p>如果OBJECT_ID('tempdb ..#tbl1')不为空

开始

删除表#tbl1

结束

创建表#tbl1

(DocEntry int,DocNum varchar(10),DocDate date,DocStatus varchar(1),NumAtCard varchar(100),

CardName varchar(100),GstRegNo varchar(50),位置varchar(100),数量十进制(18,2),BaseAmt十进制(18,2),TaxPercent十进制(18,2),

Cgst十进制(18,2), Sgst十进制(18,2),Igst十进制(18,2),UTGst十进制(18,2),其他十进制(18,2))

插入#tbl1

SELECT M.DocEntry,M.DocNum,M.DocDate,M.DocStatus,M.NumAtCard,

M.CardName,A.GSTRegnNo,P.Location,

Sum(L.Quantity)为'Quantity',

Sum(L.LineTotal) 作为BaseAmt,Max(L.VatPrcnt)'TaxPercent',

(SELECT Isnull(Sum(TaxSum),0)FROM PCH4,其中statype = -100和DocEntry = M.DocEntry和StcCode = L.TaxCode )作为'CGST',

(从PCH4中选择SELECT Isnull(Sum(TaxSum),0),其中statype = -110并且DocEntry = M.DocEntry和StcCode = L.TaxCode)作为'SGST',/p>

(从PCH4中选择Isnull(Sum(TaxSum),0),其中statype = -120且DocEntry = M.DocEntry和StcCode = L.TaxCode)为'IGST',

( 从PCH4 SELECT Isnull(Sum(TaxSum),0)其中statype = -150且DocEntry = M.DocEntry和StcCode = L.TaxCode)作为'UTGST',

Isnull(Sum(M.WTSum + M.RoundDif + M.TotalExpns),0)设为其他

FROM OPCH L.DocEntry上的M内连接PCH1 L = M.CardCode上的M.DocEntry

左连接CRD1 A = L。[LocCode] = P。[Code]

上的A.CardCode和M.PayToCode = A.Address和A.AdresType ='S'

INNER JOIN OLCT P 在哪里(M.DocDate> = @FromDate和M.DocDate <= @Todate)

组别

M.Doc Entry,M.DocNum,M.DocDate,M.DocStatus,M.NumAtCard,M.CardName,A.GSTRegnNo,P。[Location],L.TaxCode

ORDER BY

M.DocEntry,M.DocNum,M.DocDate,M.DocStatus,M.NumAtCard,M.CardName

SELECT

在RR = 1则CAST的情况下(DocEntry AS varchar (20))ELSE''END'内部编号',

当RR = 1时的情况然后是CAST(DocNum AS varchar(20))ELSE''END'AP Inv。 #',

当RR = 1时的情况然后转换(VARCHAR(10),DocDate,103)否则''END'Doc。 日期",

当RR = 1时为例,然后DocStatus ELSE" END"文档。 状态",

当RR = 1则为NumAtCard ELSE的情况''END'Bill No.&Dt。',

当RR = 1则为CardName ELSE时的情况'END'供应商 名称",

当RR = 1则为GstRegnNo ELSE''END的情况'Gst No',

当RR = 1则为ASE ELSE" END位置的情况,

Quantity,BaseAmt,TaxPercent as'Tax%',Cgst,Sgst,Igst,UTGst,

(BaseAmt + Cgst + Sgst + Igst + UTGst)'小计',

当RR = 1时为其他情况,否则为0 END其他,

当RR = 1时,则为情况(BaseAmt + Cgst + Sgst + Igst + UTGst + Other)ELSE(BaseAmt + Cgst + Sgst + Igst + UTGst)END'总金额'

FROM

(SELECT

(ROW_NUMBER()OVER(PARTITION BY DocEntry ORDER BY DocEntry)))[RR], *

FROM#tbl1)SUBQUERY1

End

此致

Nagarajan

2楼-- · 2020-08-18 21:40

我可以让完整的查询在查询生成器中运行吗?

追夢秋陽
3楼-- · 2020-08-18 21:42
如果IF OBJECT_ID('tempdb ..#tbl1  ')不为空
 开始
  删除表#tbl1
 结束


 创建表#tbl1
 (DocEntry int,DocNum varchar(10),DocDate日期,DocStatus varchar(1),NumAtCard varchar(100),
 CardName varchar(100),GstRegNo varchar(50),Location varchar(100),数量小数(18,2),BaseAmt小数(18,2),TaxPercent小数(18,2),
 Cgst十进制(18,2),Sgst十进制(18,2),Igst十进制(18,2),UTGst十进制(18,2),其他十进制(18,2))


 从(选择M.DocEntry,M.DocNum,M.DocDate,M.DocStatus,M.NumAtCard,
 M.CardName,A.GSTRegnNo,P.Location,
 总和(L.Quantity)为" Quantity",
 Sum(L.LineTotal)作为BaseAmt,Max(L.VatPrcnt)'TaxPercent',
 (SELECT Isnull(Sum(TaxSum),0)来自PCH4,其中statype = -100且DocEntry = M.DocEntry和StcCode = L.TaxCode)为'CGST',
 (从PCH4的SELECT Isnull(Sum(TaxSum),0)其中statype = -110且DocEntry = M.DocEntry和StcCode = L.TaxCode)作为'SGST',
 (SELECT Isnull(Sum(TaxSum),0)来自PCH4,其中statype = -120且DocEntry = M.DocEntry和StcCode = L.TaxCode)为'IGST',
 (从PCH4选择SELECT Isnull(Sum(TaxSum),0),其中statype = -150并且DocEntry = M.DocEntry和StcCode = L.TaxCode)作为'UTGST',
 Isnull(Sum(M.WTSum + M.RoundDif + M.TotalExpns),0)其他


 从OPCH M在L.DocEntry上的内部联接PCH1 L = M.DocEntry
 M.CardCode = A.CardCode和M.PayToCode = A.Address和A.AdresType ='S'上的左联接CRD1 A
 L. [LocCode] = P。[Code]上的INNER JOIN OLCT P


 在哪里(M.DocDate> ='[%0]'和M.DocDate <='[%1]')

 通过...分组
 M.DocEntry,M.DocNum,M.DocDate,M.DocStatus,M.NumAtCard,M.CardName,A.GSTRegnNo,P。[Location],L.TaxCode)a
 订购
 a.DocEntry,a.DocNum,a.DocDate,a.DocStatus,a.NumAtCard,a.CardName,a.GSTRegnNo,a。[位置]


 选择
 RR = 1时的情况然后是CAST(DocEntry AS varchar(20))ELSE''END'Internal No',
 RR = 1时的情况,然后投放(DocNum AS varchar(20))ELSE''END'AP Inv。  #',
 RR = 1时的情况然后转换(VARCHAR(10),DocDate,103)否则''END'Doc。 日期',
 当RR = 1时为个案然后DocStatus ELSE''END'Doc。 状态',
 RR = 1时的情况,然后用NumAtCard ELSE''END'Bill No.&Dt。',
 RR = 1时的情况,然后是CardName ELSE''END'Vendor Name',
 当RR = 1时为GstRegnNo ELSE''END'Gst No',
 在RR = 1的情况下,然后在其他位置''结束位置,
 数量,BaseAmt,TaxPercent作为"税收%",Cgst,Sgst,Igst,UTGst,
 (BaseAmt + Cgst + Sgst + Igst + UTGst)'小计',
 RR = 1时的情况,然后其他,否则0 END,
 RR = 1 THEN时的情况(BaseAmt + Cgst + Sgst + Igst + UTGst + Other)ELSE(BaseAmt + Cgst + Sgst + Igst + UTGst)END'总金额'
 从
 (选择
 (ROW_NUMBER()OVER(按DocEntry排序的PARTITION或按DocEntry排序的))[RR],*
 来自#tbl1)SUBQUERY1
 
Doze时光
4楼-- · 2020-08-18 21:53

嗨Nagarajan

在查询生成器中出现问题

谢谢

一周热门 更多>