Tsql 根据问题显示不同的总计(&A);日期

Tsql 根据问题显示不同的总计(&A);日期,tsql,sql-server-2017,Tsql,Sql Server 2017,我的查询有以下结果: 上述样本数据: declare @tbl table (DateOfService date, IssueID int, IssueName varchar(100), AssignedConsultant varchar(30), Activity varchar(100), TimeSpent float, TimeInvoiced float) insert into @tbl (DateOfService,IssueID,IssueName,AssignedCo

我的查询有以下结果:

上述样本数据:

declare @tbl table (DateOfService date, IssueID int, IssueName varchar(100), AssignedConsultant varchar(30), Activity varchar(100), TimeSpent float, TimeInvoiced float)

insert into @tbl (DateOfService,IssueID,IssueName,AssignedConsultant,Activity,TimeSpent,TimeInvoiced) values ('2019-12-19',10295,'Bin Issue','Doug','Activity Detail 1…',10.25,8)
insert into @tbl (DateOfService,IssueID,IssueName,AssignedConsultant,Activity,TimeSpent,TimeInvoiced) values ('2019-12-19',10295,'Bin Issue','Doug','Activity Detail 2…',10.25,8)
insert into @tbl (DateOfService,IssueID,IssueName,AssignedConsultant,Activity,TimeSpent,TimeInvoiced) values ('2020-01-24',10295,'Bin Issue','Doug','Activity Detail 3…',5.5,4)
insert into @tbl (DateOfService,IssueID,IssueName,AssignedConsultant,Activity,TimeSpent,TimeInvoiced) values ('2020-01-24',10295,'Bin Issue','Doug','Activity Detail 4…',5.5,4)

select
*
from    @tbl
但是,出于保密原因,我无法分享我的疑问

如何改变这些结果,使其看起来像这样:

从我的预期结果可以看出,我只需要计算每个日期花费和开具发票的总时间

我遇到的问题是,这个结果被用于Excel中的pivot,导致出现双值


请帮忙?

我认为这不管用,但看起来对这些结果是管用的

下面是我的想法(不确定技术上是否正确),但它对我很有用:

declare @tbl table (DateOfService date, IssueID int, IssueName varchar(100), AssignedConsultant varchar(30), Activity varchar(100), TimeSpent float, TimeInvoiced float)

insert into @tbl (DateOfService,IssueID,IssueName,AssignedConsultant,Activity,TimeSpent,TimeInvoiced) values ('2019-12-19',10295,'Bin Issue','Doug','Activity Detail 1…',10.25,8)
insert into @tbl (DateOfService,IssueID,IssueName,AssignedConsultant,Activity,TimeSpent,TimeInvoiced) values ('2019-12-19',10295,'Bin Issue','Doug','Activity Detail 2…',10.25,8)
insert into @tbl (DateOfService,IssueID,IssueName,AssignedConsultant,Activity,TimeSpent,TimeInvoiced) values ('2020-01-24',10295,'Bin Issue','Doug','Activity Detail 3…',5.5,4)
insert into @tbl (DateOfService,IssueID,IssueName,AssignedConsultant,Activity,TimeSpent,TimeInvoiced) values ('2020-01-24',10295,'Bin Issue','Doug','Activity Detail 4…',5.5,4)

select
    DateOfService
,   IssueID
,   IssueName
,   AssignedConsultant
,   Activity
,   case when lag(TimeSpent) over (order by IssueName) = TimeSpent then 0 else TimeSpent end            TimeSpent
,   case when lag(TimeInvoiced) over (order by IssueName) = TimeInvoiced then 0 else TimeInvoiced end   TimeInvoiced
from    @tbl

请参见

中的结果,我假设您有某种方法来标识每一行,因此我在表变量中添加了and ID列。我还将第二行的值保留为NULL,因为您不清楚在那里需要什么值。无论如何,这应该适用于表示的数据集:

declare @tbl table (ID int,DateOfService date, IssueID int, IssueName varchar(100), AssignedConsultant varchar(30), Activity varchar(100), TimeSpent float, TimeInvoiced float)

insert into @tbl (ID,DateOfService,IssueID,IssueName,AssignedConsultant,Activity,TimeSpent,TimeInvoiced) values (1,'2019-12-19',10295,'Bin Issue','Doug','Activity Detail 1…',10.25,8)
insert into @tbl (ID,DateOfService,IssueID,IssueName,AssignedConsultant,Activity,TimeSpent,TimeInvoiced) values (2,'2019-12-19',10295,'Bin Issue','Doug','Activity Detail 2…',10.25,8)
insert into @tbl (ID,DateOfService,IssueID,IssueName,AssignedConsultant,Activity,TimeSpent,TimeInvoiced) values (3,'2020-01-24',10295,'Bin Issue','Doug','Activity Detail 3…',5.5,4)
insert into @tbl (ID,DateOfService,IssueID,IssueName,AssignedConsultant,Activity,TimeSpent,TimeInvoiced) values (4,'2020-01-24',10295,'Bin Issue','Doug','Activity Detail 4…',5.5,4)


;WITH CTE AS (
SELECT MIN(ID) ID, DateOfService
FROM @tbl
GROUP BY DateOfService
)
SELECT T1.DateOfService,
        IssueID,
        IssueName,
        AssignedConsultant,
        Activity, 
        CASE WHEN T2.ID IS NULL THEN NULL ELSE T1.TimeSpent END TimeSpent,
        CASE WHEN T2.ID IS NULL THEN NULL ELSE T1.TimeInvoiced END TimeInvoiced
FROM @tbl T1
LEFT JOIN CTE T2 on T1.ID = T2.ID