按类别分组的SQL查询

按类别分组的SQL查询,sql,sql-server,Sql,Sql Server,使用SQL Server 2016 我有下表: Action Id Epic Due Date First Name Action 1 Epic 1 27-Feb-19 Tom Action 2 Epic 2 28-Feb-19 John Action 3 Epic 3 1-Mar-19 Ana Action 4 Epic 3 15-Apr-19 Ana 是否可以设计具有以下输出的查询 Action/Epic Due Dat

使用SQL Server 2016

我有下表:

Action Id   Epic    Due Date    First Name
Action 1    Epic 1  27-Feb-19   Tom
Action 2    Epic 2  28-Feb-19   John
Action 3    Epic 3  1-Mar-19    Ana
Action 4    Epic 3  15-Apr-19   Ana
是否可以设计具有以下输出的查询

Action/Epic   Due Date  First Name   Type
Epic 1                               Epic
Action 1      27-Feb-19 Tom          Action
Epic 2                               Epic
Action 2      28-Feb-19 John         Action
Epic 3                               Epic
Action 3      1-Mar-19  Ana          Action
Action 4      15-Apr-19 Ana          Action

是的,你可以用多种方法中的一种,我想:

桌子

质疑

结果

例如:

解释

按actionid排序后,按顺序为每行指定一个数字 对于每一行,拉出史诗。如果epic重复,则获取最小序列号 获取行动记录 将数据组合在一起 按序列号排序,知道一些史诗和动作将具有相同的序列号,因为它们来自同一行 序列号排序后,按Epic排序,使E位于A之前
仅仅看到原始数据是非常令人困惑的。你能用文字解释一下你想达到什么目的吗?这看起来像是一个UNPIVOT-查一下。我想把第1列和第2列,即[Action ID]和{Epic]合并在一个单独的列中,并添加一个额外的[Type]列,显示类型,即Epic或Action。不完全是UNPIVOT使用选择ActionId+''+EpicId作为[Action Epic],截止日期,名字,Epic作为表格中的类型,或者更好,仍然使用CONCATAmazing,非常感谢zedfoxus的帮助和全面的回答!
create table test (
    actionid varchar(100),
    epic varchar(100),
    duedate varchar(100),
    firstname varchar(100)
);

insert into test values
('Action 1', 'Epic 1', '27-Feb-19', 'Tom'),
('Action 2', 'Epic 2', '28-Feb-19', 'John'),
('Action 3', 'Epic 3', '1-Mar-19', 'Ana'),
('Action 4', 'Epic 3', '15-Apr-19', 'Ana');
with data as (
    select 
        row_number() over(order by actionid) as sr,
        *
    from test
),
compiled as (
    select min(sr) as sr, epic as actionid, '' as epic, '' as duedate, '' as firstname, 'Epic' as type
    from data group by epic
    union all
    select *, 'Action' as type from data
)
select actionid, epic, duedate, firstname, type from compiled order by sr, actionid desc
actionid    epic    duedate   firstname type
Epic 1                                  Epic
Action 1    Epic 1  27-Feb-19   Tom     Action
Epic 2                                  Epic
Action 2    Epic 2  28-Feb-19   John    Action
Epic 3                                  Epic
Action 3    Epic 3  1-Mar-19    Ana     Action
Action 4    Epic 3  15-Apr-19   Ana     Action