2025-05-29 18:12:44 +08:00
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
[<EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
|
|
|
|
|
[<EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
|
|
|
|
|
[Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
|
|
|
|
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶθ<D6B6>ʽ<EFBFBD><CABD>
|
|
|
|
|
CAST([Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>] AS DECIMAL(18,2)) AS [Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>],
|
|
|
|
|
CAST([ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>] AS DECIMAL(18,2)) AS [ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>],
|
|
|
|
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶθ<D6B6>ʽ<EFBFBD><CABD>
|
|
|
|
|
CAST([Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] AS DECIMAL(18,2)) AS [Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
|
|
|
|
|
CAST([ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] AS DECIMAL(18,2)) AS [ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
|
|
|
|
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶθ<D6B6>ʽ<EFBFBD><CABD>
|
|
|
|
|
CAST([Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><EFBFBD><EFBFBD>] AS DECIMAL(18,2)) AS [Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><EFBFBD><EFBFBD>],
|
|
|
|
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶθ<D6B6>ʽ<EFBFBD><CABD>
|
|
|
|
|
[<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] = CAST( ROUND([Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>] - [ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>], 2) AS DECIMAL(18,2)) ,
|
|
|
|
|
[<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] = CAST( ROUND([Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] - [ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>], 2) AS DECIMAL(18,2)) ,
|
|
|
|
|
[ʵ<EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><EFBFBD><EFBFBD>] = CAST( CASE
|
|
|
|
|
WHEN [ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] != 0 THEN ROUND([ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>] / [ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>], 2)
|
|
|
|
|
ELSE 0
|
|
|
|
|
END AS DECIMAL(18,2)) ,
|
|
|
|
|
[<EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><EFBFBD>۲<EFBFBD><EFBFBD><EFBFBD>] = CAST( CASE
|
|
|
|
|
WHEN [ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] != 0 THEN ROUND(([ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>] / [ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]) - [Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><EFBFBD><EFBFBD>], 2)
|
|
|
|
|
ELSE ROUND([Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><EFBFBD><EFBFBD>], 2) end AS DECIMAL(18,2))
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT
|
|
|
|
|
t3.FNUMBER AS [<EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
|
|
|
|
|
t4.FNAME AS [<EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
|
|
|
|
|
t5.FNUMBER AS [Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
|
|
|
|
|
isnull( ROUND(('+@sql2+') * FPrice, 2),0) AS [Ԥ<EFBFBD><EFBFBD><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 [ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>],
|
|
|
|
|
isnull( ('+@sql2+'),0) AS [Ԥ<EFBFBD><EFBFBD><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 [ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>],
|
|
|
|
|
isnull( FPrice,0) AS [Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><EFBFBD><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
|
2025-06-03 14:47:13 +08:00
|
|
|
|
FULL JOIN
|
|
|
|
|
(select t1.* from VHUB_t_Cust_Entry100007 t1
|
|
|
|
|
INNER JOIN (select * from VHUB_t_Cust100008 tt3 where tt3.FYEARS = @FYear) t2 ON t1.FID = t2.FID) t1
|
2025-05-29 18:12:44 +08:00
|
|
|
|
ON t1.FCUSTOMERID=YingShou.FCUSTOMERID AND YingShou.FBMMATERIALGROUP=t1.FBMMATERIALGROUP
|
|
|
|
|
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
|
2025-06-03 14:47:13 +08:00
|
|
|
|
WHERE 1=1
|
2025-05-29 18:12:44 +08:00
|
|
|
|
'+@where2+@where3+'
|
|
|
|
|
) AS aaa';
|
|
|
|
|
|
|
|
|
|
PRINT @sql;
|
|
|
|
|
-- ִ<>ж<EFBFBD>̬ SQL
|
|
|
|
|
EXEC sp_executesql
|
|
|
|
|
@sql,
|
|
|
|
|
N'@FYear INT, @begintime DATETIME, @endtime DATETIME',
|
|
|
|
|
@FYear,
|
|
|
|
|
@begintime,
|
|
|
|
|
@endtime;
|
|
|
|
|
END
|