【发布时间】:2019-07-20 18:51:46
【问题描述】:
我有以下数据的临时表
我只想填写开始日期和结束日期之间缺失的日期,并重复运行余额列,直到未显示新余额。每个客户也需要相同的重复。当显示新余额时,它将再次重复下一个值。
另外,我想选择每天的最大交易日期。
有什么帮助吗?
DECLARE @Date DATETIME, @StartDate DATETIME, @EndDate DATETIME, @Counter INT, @TotalDays INT
SET @Date = '2018-11-25'
SET @StartDate = CONVERT(varchar, dateadd(month,datediff(month,0,@Date),0), 111)
SET @EndDate = CONVERT(varchar, dateadd(day,-1,dateadd(month,datediff(month,-1,@Date),0)), 111)
SET @Counter = 0
SET @TotalDays = DAY(@EndDate)
----------------------------------------------------------------
CREATE TABLE #Customers
(
ID BIGINT IDENTITY(1,1),
Customer_ID BIGINT,
Transaction_Date DATETIME,
Serial_No INT
)
INSERT INTO #Customers
(Customer_ID, Transaction_Date, Serial_No)
SELECT tc.Customer_Id, tc.Transaction_Date, tc.Serial_No
FROM Transaction_Main AS tm
JOIN Transaction_Detail AS td
ON td.Transaction_Date = tm.Transaction_Date
AND td.Transaction_No = tm.Transaction_No
JOIN Transaction_Customer AS tc
ON tc.Transaction_Date = td.Transaction_Date
AND tc.Transaction_No = td.Transaction_No
AND tc.Serial_No = td.Serial_No
WHERE tm.Transaction_Status IN ('A', 'P')
AND tm.Transaction_Date BETWEEN @StartDate AND @EndDate + ' 23:59:59'
AND td.Transaction_Date BETWEEN @StartDate AND @EndDate + ' 23:59:59'
AND tc.Transaction_Date BETWEEN @StartDate AND @EndDate + ' 23:59:59'
AND tc.Customer_Id = 21
AND tm.Transaction_Type <> 4
【问题讨论】:
-
能不能加一个你想要的输出的表结构?
-
您可以添加您的选择查询吗?
-
“我想选择每天的最大交易日期”——你不能,因为你有几行具有相同的确切日期和时间。当天适用的金额是多少?我们无法为您猜测。
标签: sql sql-server tsql