【发布时间】:2021-03-16 07:28:04
【问题描述】:
我有这张桌子。我想通过 startdate 和 enddate 查看结果。输出底部图像。我想要那种格式的输出:
CREATE TABLE [dbo].[PayerMode](
[Location] [int] NOT NULL,
[Customer] INT NOT NULL,
[Date] DATE NOT NULL,
[PayMode] Varchar(50) NOT NULL
)
GO
INSERT INTO PayerMode VALUES (100, 45454, '3/20/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45454, '3/21/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45454, '3/22/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45454, '3/23/2014','Cash');
INSERT INTO PayerMode VALUES (100, 45454, '3/24/2014','Cash');
INSERT INTO PayerMode VALUES (100, 45454, '3/25/2014','Credit');
INSERT INTO PayerMode VALUES (100, 45454, '3/26/2014','Credit');
INSERT INTO PayerMode VALUES (100, 45454, '3/27/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45454, '3/28/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45454, '3/29/2014','Cash');
INSERT INTO PayerMode VALUES (100, 45454, '3/30/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45454, '3/31/2014','Credit');
INSERT INTO PayerMode VALUES (100, 45454, '4/1/2014','Credit');
INSERT INTO PayerMode VALUES (100, 45678, '3/20/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45678, '3/21/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45678, '3/22/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45678, '3/23/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45678, '3/24/2014','Cash');
INSERT INTO PayerMode VALUES (100, 45678, '3/25/2014','Credit');
INSERT INTO PayerMode VALUES (100, 45678, '3/26/2014','Credit');
INSERT INTO PayerMode VALUES (100, 45678, '3/27/2014','Credit');
INSERT INTO PayerMode VALUES (100, 45678, '3/28/2014','Cash');
INSERT INTO PayerMode VALUES (100, 45678, '3/29/2014','Cash');
INSERT INTO PayerMode VALUES (100, 45678, '3/30/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45678, '3/31/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45678, '4/1/2014','Credit');
现在,我发现我的数据集中有一个缺口。我怎样才能达到相同的结果。当存在间隙时,上述查询不起作用。这是我的新数据集,我希望使用 StartDate 和 EndDate 获得相同的结果。
CREATE TABLE [dbo].[PayerMode](
[Location] [int] NOT NULL,
[Customer] INT NOT NULL,
[Date] DATE NOT NULL,
[PayMode] Varchar(50) NOT NULL
)
GO
INSERT INTO PayerMode VALUES (100, 45454, '3/20/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45454, '3/21/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45454, '3/22/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45454, '3/25/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45454, '3/26/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45454, '3/27/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45454, '3/29/2014','Cash');
INSERT INTO PayerMode VALUES (100, 45454, '3/30/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45454, '3/31/2014','Credit');
INSERT INTO PayerMode VALUES (100, 45454, '4/1/2014','Credit');
INSERT INTO PayerMode VALUES (100, 45678, '3/20/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45678, '3/21/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45678, '3/22/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45678, '3/23/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45678, '3/24/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45678, '3/27/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45678, '3/28/2014','Insurance');
INSERT INTO PayerMode VALUES (100, 45678, '3/31/2014','Credit');
INSERT INTO PayerMode VALUES (100, 45678, '4/1/2014','Credit');
我想要这样的结果。
Location customer StartDate enddate paymode
100 45454 3/20/2014 3/22/2014 Insurance
100 45454 3/25/2014 3/27/2014 Insurance
100 45454 3/29/2014 3/29/2014 Cash
【问题讨论】:
-
请将您的示例数据添加为我们可以轻松用于测试的插入/选择语句。
-
我给了你一个样本数据集。我添加了一张图片。它不允许我添加示例表。你想要插入语句吗?我想要每个客户的每个支付类型的 startDate 和 enddate。这是一个带有日期的表格序列。我只想要按支付模式为每个范围的最小和最大日期。
-
您想要插入语句 很好,或者您希望我们输入您的所有数据以提供解决方案? ;)
标签: sql sql-server tsql