This commit is contained in:
2025-05-29 18:12:44 +08:00
parent 20c69e3d91
commit b9e5ca1cc1
2 changed files with 179 additions and 15 deletions

View File

@@ -0,0 +1,148 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[P_BudgeSaleAndActualSaleReport]
(
@FYear nvarchar(10), ---<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@FStartMonth nvarchar(10), ---<EFBFBD><EFBFBD>ʼ<EFBFBD>·<EFBFBD>
@FEndMonth nvarchar(10), ---<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>
@CustomerId nvarchar(max), ---<EFBFBD><EFBFBD>ѡ<EFBFBD>ͻ<EFBFBD>ID
@FBMMaterialGroup nvarchar(max) ---Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
)
as
BEGIN
DECLARE @sql NVARCHAR(MAX),@where2 NVARCHAR(max)='',@where3 NVARCHAR(max)='';
DECLARE @begintime DATETIME,@endtime DATETIME;
DECLARE @i int=@FStartMonth,@sql2 nvarchar(max)='';
while(@i<=@FEndMonth)
BEGIN
IF(@i<@FEndMonth)
BEGIN
SELECT @sql2 +='FMONTH'+CONVERT(nvarchar(10),@i)+'+';
END
ELSE
BEGIN
SELECT @sql2 +='FMONTH'+CONVERT(NVARCHAR(10),@i);
END
SELECT @i=@i+1;
END
SELECT @begintime=
CAST(
@FYear + '-' +
RIGHT('0' + @FStartMonth, 2) + '-' +
RIGHT('0' + 1, 2)
AS DATE
), @endtime=
CAST(
@FYear + '-' +
RIGHT('0' + @FEndMonth, 2) + '-' +
RIGHT('0' + 1, 2)
AS DATE
);
SELECT @endtime=DATEADD(MONTH,1,@endtime);
IF(ISNULL(@CustomerId,'') <> '')
BEGIN
SELECT @CustomerId=CHAR(39)+ REPLACE(@CustomerId, ',', CHAR(39) + ',' + CHAR(39))+CHAR(39);
SELECT @where2=' and t3.FNUMBER in ('+@CustomerId+')';
END
IF(ISNULL(@FBMMaterialGroup,'') <> '')
BEGIN
SELECT @FBMMaterialGroup=CHAR(39)+ REPLACE(@FBMMaterialGroup, ',', CHAR(39) + ',' + CHAR(39))+CHAR(39);
SELECT @where3=' and t5.FNUMBER in ('++@FBMMaterialGroup+')';
end
-- <20><>̬ƴ<CCAC><C6B4> SQL <20>ַ<EFBFBD><D6B7><EFBFBD>
SET @sql = N'
SELECT
[<5B>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>],
[<5B>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>],
<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶθ<D6B6>ʽ<EFBFBD><CABD>
CAST([Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>] AS DECIMAL(18,2)) AS [Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>],
CAST([ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>] AS DECIMAL(18,2)) AS [ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>],
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶθ<D6B6>ʽ<EFBFBD><CABD>
CAST([Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] AS DECIMAL(18,2)) AS [Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
CAST([ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] AS DECIMAL(18,2)) AS [ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶθ<D6B6>ʽ<EFBFBD><CABD>
CAST([Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD>] AS DECIMAL(18,2)) AS [Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD>],
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶθ<D6B6>ʽ<EFBFBD><CABD>
[<5B><><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] = CAST( ROUND([Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>] - [ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>], 2) AS DECIMAL(18,2)) ,
[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] = CAST( ROUND([Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] - [ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>], 2) AS DECIMAL(18,2)) ,
<><CAB5>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD>] = CAST( CASE
WHEN [ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] != 0 THEN ROUND([ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>] / [ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>], 2)
ELSE 0
END AS DECIMAL(18,2)) ,
[<5B><><EFBFBD>۵<EFBFBD><DBB5>۲<EFBFBD><DBB2><EFBFBD>] = CAST( CASE
WHEN [ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] != 0 THEN ROUND(([ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>] / [ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]) - [Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD>], 2)
ELSE ROUND([Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD>], 2) end AS DECIMAL(18,2))
FROM (
SELECT
t3.FNUMBER AS [<5B>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>],
t4.FNAME AS [<5B>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>],
t5.FNUMBER AS [Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
isnull( ROUND(('+@sql2+') * FPrice, 2),0) AS [Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>],
(
SELECT ROUND(SUM(bb.FNOTAXAMOUNT), 2)
FROM dbo.T_AR_RECEIVABLE aa
LEFT JOIN T_AR_RECEIVABLEENTRY bb ON aa.FID = bb.FID
INNER JOIN T_BD_MATERIAL matal2 ON bb.FMATERIALID = matal2.FMATERIALID
INNER JOIN VHUB_T_BMMGroupLinkTable cc ON matal2.FMATERIALGROUP = cc.[FMATERIALGROUP]
WHERE
aa.FCUSTOMERID =YingShou.FCUSTOMERID
AND aa.FDATE >= @begintime
AND aa.FDATE < @endtime
AND cc.[FBMMATERIALGROUP] = t5.FID
) AS [ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>],
isnull( ('+@sql2+'),0) AS [Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
(
SELECT SUM(bb.FPriceQty)
FROM dbo.T_AR_RECEIVABLE aa
LEFT JOIN T_AR_RECEIVABLEENTRY bb ON aa.FID = bb.FID
INNER JOIN T_BD_MATERIAL matal2 ON bb.FMATERIALID = matal2.FMATERIALID
INNER JOIN VHUB_T_BMMGroupLinkTable cc ON matal2.FMATERIALGROUP = cc.[FMATERIALGROUP]
WHERE
aa.FCUSTOMERID =YingShou.FCUSTOMERID
AND aa.FDATE >= @begintime
AND aa.FDATE < @endtime
AND cc.[FBMMATERIALGROUP] = t5.FID
) AS [ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
isnull( FPrice,0) AS [Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD>]
FROM ( SELECT DISTINCT aa.FCUSTOMERID , cc.[FBMMATERIALGROUP]
FROM dbo.T_AR_RECEIVABLE aa
LEFT JOIN T_AR_RECEIVABLEENTRY bb ON aa.FID = bb.FID
INNER JOIN T_BD_MATERIAL matal2 ON bb.FMATERIALID = matal2.FMATERIALID
INNER JOIN VHUB_T_BMMGroupLinkTable cc ON matal2.FMATERIALGROUP = cc.[FMATERIALGROUP]
where aa.FDATE >= @begintime
AND aa.FDATE < @endtime
) YingShou
FULL JOIN
VHUB_t_Cust_Entry100007 t1
ON t1.FCUSTOMERID=YingShou.FCUSTOMERID AND YingShou.FBMMATERIALGROUP=t1.FBMMATERIALGROUP
LEFT JOIN (select * from VHUB_t_Cust100008 tt3 where tt3.FYEARS = @FYear) t2 ON t1.FID = t2.FID
LEFT JOIN T_BD_CUSTOMER t3 ON isnull(YingShou.FCUSTOMERID,t1.FCUSTOMERID) = t3.FCUSTID
LEFT JOIN T_BD_CUSTOMER_L t4 ON t3.FCUSTID = t4.FCUSTID
INNER JOIN VHUB_BD_BMMaterialGroup t5 ON isnull(YingShou.FBMMATERIALGROUP,t1.FBMMATERIALGROUP)= t5.FID
WHERE 1=1
'+@where2+@where3+'
) AS aaa';
PRINT @sql;
-- ִ<>ж<EFBFBD>̬ SQL
EXEC sp_executesql
@sql,
N'@FYear INT, @begintime DATETIME, @endtime DATETIME',
@FYear,
@begintime,
@endtime;
END

View File

@@ -1,16 +1,29 @@
select top 100 T1.FBILLNO,T2.FENTRYID,t2.FMaterialID,ff.FNUMBER, FMustQty ,t4.*,T6.* from T_SAL_OUTSTOCK T1 inner join T_SAL_OUTSTOCKENTRY T2
inner join T_SAL_OUTSTOCKENTRY_C T3 on T3.FENTRYID = T2.FENTRYID
ON T1.FID = T2.FID
inner join T_SAL_OUTSTOCKENTRY_CE T4 on T3.FENTRYID = T4.FENTRYID
left join T_HS_CALDIMENSIONS T5 on T3.FDIMENSIONID = T5.FDIMENSIONID
left join T_BD_EXPENSE_L T6 on T4.FEXPENSEID = T6.FEXPID and T6.FLOCALEID = 2052
left join T_BD_MATERIAL ff on t2.FMaterialID=ff.FMaterialID
order by T2.FENTRYID desc
SELECT T1.FCUSTOMERID,t1.FDOCUMENTSTATUS
DECLARE @sql NVARCHAR(MAX),@where2 NVARCHAR(max)='',@where3 NVARCHAR(max)='', @FStartMonth nvarchar(10),
@FEndMonth nvarchar(10) ;
DECLARE @begintime DATETIME,@endtime DATETIME;
DECLARE @i int=@FStartMonth,@sql2 nvarchar(max)='';
while(@i<=@FEndMonth)
BEGIN
IF(@i<@FEndMonth)
BEGIN
SELECT @sql2 +='FMONTH'+CONVERT(nvarchar(10),@i)+'+';
END
ELSE
BEGIN
SELECT @sql2 +='FMONTH'+CONVERT(NVARCHAR(10),@i);
END
SELECT @i=@i+1;
END
SELECT
t3.FNUMBER AS [客户编码],
t4.FNAME AS [客户名称],
t5.FNUMBER AS [预算物料组],
T1.FCUSTOMERID,t1.FDOCUMENTSTATUS
, cc.[FBMMATERIALGROUP],SUM(FRealQty) AS FRealQty
,(SELECT SUM(FREALQTY) FROM dbo.T_SAL_RETURNSTOCK tui LEFT JOIN T_SAL_RETURNSTOCKENTRY tuide ON tui.FID=tuide.FID
WHERE tui.FAPPROVEDATE>='2025-05-01' AND tui.FAPPROVEDATE<'2025-06-01' AND tui.FDOCUMENTSTATUS='C'
@@ -34,11 +47,15 @@ select sum(FFEEAMOUNT)
INNER join T_SAL_OUTSTOCKENTRY T2 ON T1.FID = T2.FID
INNER JOIN T_BD_MATERIAL matal2 ON T2.FMATERIALID = matal2.FMATERIALID
INNER JOIN VHUB_T_BMMGroupLinkTable cc ON matal2.FMATERIALGROUP = cc.[FMATERIALGROUP]
LEFT JOIN T_BD_CUSTOMER t3 ON t1.FCUSTOMERID= t3.FCUSTID
LEFT JOIN T_BD_CUSTOMER_L t4 ON t3.FCUSTID = t4.FCUSTID
INNER JOIN VHUB_BD_BMMaterialGroup t5 ON cc.[FBMMATERIALGROUP]= t5.FID
WHERE T1.FAPPROVEDATE>='2025-05-01' AND t1.FAPPROVEDATE<'2025-06-01'
GROUP BY T1.FCUSTOMERID
, cc.[FBMMATERIALGROUP],t1.FDOCUMENTSTATUS
GROUP BY T1.FCUSTOMERID, cc.[FBMMATERIALGROUP],t1.FDOCUMENTSTATUS, t3.FNUMBER ,
t4.FNAME , t5.FNUMBER
--SELECT * FROM VHUB_T_BMMGroupLinkTable
-- SELECT * FROM VHUB_BD_BMMaterialGroup
--select T1.FID, T1.FBILLNO,T2.FENTRYID,t2.FMaterialID,ff.FNUMBER, FMustQty ,t4.*,T6.*
--from T_SAL_OUTSTOCK T1 inner join T_SAL_OUTSTOCKENTRY T2
--inner join T_SAL_OUTSTOCKENTRY_C T3 on T3.FENTRYID = T2.FENTRYID
@@ -49,4 +66,3 @@ select sum(FFEEAMOUNT)
-- left join T_BD_MATERIAL ff on t2.FMaterialID=ff.FMaterialID
-- WHERE T1.FAPPROVEDATE>='2025-05-01' AND t1.FAPPROVEDATE<'2025-06-01'
--order by T2.FENTRYID desc