Sql server 如何显示相邻的两个日期?
我有下面的SLQ来选择一个日期,但我想看到两个日期相邻。我该怎么做Sql server 如何显示相邻的两个日期?,sql-server,tsql,Sql Server,Tsql,我有下面的SLQ来选择一个日期,但我想看到两个日期相邻。我该怎么做 Delete From Variance_Analysis INSERT INTO Variance_Analysis SELECT PIDs.Product_Group, PIDs.PID, PIDs.PID_Name, SUM(MaturityValue) Current_Balance, AsOfDate as Current_Date FROM [TBL_PIDs] AS
Delete From Variance_Analysis
INSERT INTO Variance_Analysis
SELECT PIDs.Product_Group,
PIDs.PID,
PIDs.PID_Name,
SUM(MaturityValue) Current_Balance,
AsOfDate as Current_Date
FROM [TBL_PIDs] AS PIDs INNER JOIN RAW_DATA_HIST AS RawData
ON PIDs.PID = RawData.PID
Where AsOfDate = '2017-10-31'
GROUP BY Product_Group,
PIDs.PID,
PIDs.PID_Name,
AsOfDate
正如您所知,我清除了表格,然后在汇总账户余额时插入一些ID和一个日期。我需要另找一个日期,把各自的余额加起来。然后,我想找出绝对差和相对差,分成3个区域。我正在使用SQLServer2008
-- Step1:
CREATE TABLE test_table (
Product_Group varchar(255),
PID varchar(10),
PID_Name varchar(255),
maturityValue decimal(18,2),
AsofDate date,
Portfolio varchar(255)
);
-- Step2:
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Invt','I.B.7','Investments',1258.69,'9/29/2017','Holding')
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Asse','A.Q.7','Assets',1263.28,'9/29/2017','Holding')
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Forx','X.S.7','Foreign_Exchange',1267.89,'9/29/2017','Holding')
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Forx','X.S.7','Foreign_Exchange',1272.51,'9/29/2017','Holding')
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Forx','X.S.7','Foreign_Exchange',1277.15,'9/29/2017','Holding')
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Govt','G.G.7','Government',1281.81,'9/29/2017','Passing')
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Govt','G.G.7','Government',1286.48,'9/29/2017','Passing')
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Invt','I.S.7','Investments',1359.3852,'10/31/2017','Passing')
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Asse','I.S.7','Assets',1364.3424,'10/31/2017','Holding')
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Forx','I.S.7','Foreign_Exchange',1331.2845,'10/31/2017','Holding')
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Forx','I.S.7','Foreign_Exchange',1336.1355,'10/31/2017','Holding')
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Forx','I.S.7','Foreign_Exchange',1341.0075,'10/31/2017','Holding')
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Govt','I.S.7','Government',1435.6272,'10/31/2017','Holding')
INSERT INTO test_table (Product_Group,PID,PID_Name,maturityValue,AsofDate,Portfolio)
VALUES ('Govt','I.S.7','Government',1518.0464,'10/31/2017','Passing')
之前:
Product_Group PID PID_Name maturityValue AsofDate Portfolio
Invt I.B.7 Investments 1258.69 9/29/2017 Holding
Asst A.Q.7 Assets 1263.28 9/29/2017 Holding
Forx X.S.7 Foreign_Exchange 1267.89 9/29/2017 Holding
Forx X.S.7 Foreign_Exchange 1272.51 9/29/2017 Holding
Forx X.S.7 Foreign_Exchange 1277.15 9/29/2017 Holding
Govt G.G.7 Government 1281.81 9/29/2017 Passing
Govt G.G.7 Government 1286.48 9/29/2017 Passing
Invt I.B.7 Investments 1359.3852 10/31/2017 Passing
Asst A.Q.7 Assets 1364.3424 10/31/2017 Holding
Forx X.S.7 Foreign_Exchange 1331.2845 10/31/2017 Holding
Forx X.S.7 Foreign_Exchange 1336.1355 10/31/2017 Holding
Forx X.S.7 Foreign_Exchange 1341.0075 10/31/2017 Holding
Govt G.G.7 Government 1435.6272 10/31/2017 Holding
Govt G.G.7 Government 1518.0464 10/31/2017 Passing
之后:
这对我有用
Delete From Variance_Analysis
INSERT INTO Variance_Analysis
SELECT PIDs.Product_Group,
PIDs.PID,
PIDs.PID_Name,
SUM(CASE WHEN AsOfDate = '2017-10-31' THEN MaturityValue ELSE 0 END) AS Current_Balance,
SUM(CASE WHEN AsOfDate = '2017-09-29' THEN MaturityValue ELSE 0 END) AS Prior_Balance
FROM [TBL_PIDs] AS PIDs INNER JOIN TBL_FR2052A_RAW_DATA_HIST AS RawData
ON PIDs.PID = RawData.PID
GROUP BY PIDs.Product_Group,
PIDs.PID,
PIDs.PID_Name
图像对t-SQL问题没有帮助,尤其是当它们只包含列标题而没有数据时。相反,请您发布您的DDL和示例数据,以及您想要实现的预期输出。不过,据猜测,您可能需要使用CTE和ROW_编号。然后根据行编号的值将一行左键连接到下一行/上一行。如果您使用的是SQL Server 2012+,则可以使用超前/滞后。您需要从提供一些详细信息开始。