我正在开展多层次营销项目,这是我的表结构
CREATE TABLE [Changu143Aa].[UserSalesVolume]
(
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[UserID] [bigint] NULL,
[PSV] [decimal](18, 2) NULL DEFAULT ((0)),
[GSV] [decimal](18, 2) NULL DEFAULT ((0)),
[DateAdded] [datetime] NULL,
[Pin] [uniqueidentifier] NULL
)
我需要显示销售量,因为如果当前日期在1-15到16-30 / 31之间,如果日期属于16-30 /,那么这是他从1月15日到达的销量总和31我写了一个查询,但它没有正常工作可以任何身体帮助我
IF OBJECT_ID('tempdb..#TPersonalSalesVol') IS NOT NULL
DROP TABLE #TPersonalSalesVol
IF OBJECT_ID('tempdb..#MPersonalSalesVol') IS NOT NULL
DROP TABLE #MPersonalSalesVol
CREATE TABLE #TPersonalSalesVol
(
TotalPSV Decimal(18, 2),
TotalGSV Decimal(18, 2),
PSV Decimal(18, 2),
GSV Decimal(18, 2),
MUserID bigint
)
CREATE TABLE #MPersonalSalesVol
(
PSV Decimal(18, 2),
GSV Decimal(18, 2),
MUserID bigINT
)
INSERT INTO #MPersonalSalesVol (PSV, GSV, MUserID)
SELECT
SUM(at.PersonalSalesVolume) as PSV,
SUM(at.GroupSalesVolume) as GSV,at.UserID
FROM
UserSalesVolume AS at
WHERE
DATEPART(month,DateAdded) = DATEPART(month,GetDate())
AND DATEPART(day,DateAdded)/16 = DATEPART(day,GetDate())/16
GROUP BY
at.UserID, CONVERT(DATE, at.DateAdded, 101)
INSERT INTO #TPersonalSalesVol (TotalPSV, TotalGSV, PSV, GSV, MUserID)
SELECT
SUM(at.PersonalSalesVolume) as TotalPSV,
SUM(at.GroupSalesVolume) as TotalGSV,
t.PSV, t.GSV, at.UserID
FROM
#MPersonalSalesVol AS t
JOIN
UserSalesVolume AS at ON at.UserID = t.MUserID
GROUP BY
at.UserID, t.PSV, t.GSV
SELECT *
FROM #TPersonalSalesVol
答案 0 :(得分:1)
DECLARE @CurDate datetime2(7)=' 2016-10-16'
DECLARE @Year int = YEAR(@CurDate)
DECLARE @Month int = MONTH(@CurDate)
- 计算日范围
DECLARE @StartDay int = CASE WHEN DAY(@CurDate)< = 15那么1 ELSE 16 END
DECLARE @EndDay int =当天的情况(@CurDate)< = 15那么15节31结束
SELECT UserID,SUM(PSV),SUM(GSV)
FROM UserSalesVolume
年中(DateAdded)= @年和月(DateAdded)= @Month
和天(DateAdded)在@StartDay和@EndDay之间加入
GROUP BY UserID