Sql server 如何显示相邻的两个日期?

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

我有下面的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 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+,则可以使用超前/滞后。您需要从提供一些详细信息开始。