SQL 查询:将一个列中的数据用作另一个 table 中的列名?

SQL query: using data in a column as column names in another table?

我正在努力从如下所示的 table 中获取数据:

水平显示,按 GroupID 分组,然后 start/process/stop 次(按此顺序)显示在一行中,如下所示:

我已经尝试编写几个 SQL 案例语句,但我无法让它工作。我听从了一些在线建议,说要在 SSRS Report Builder 的 table 中编写一个 IIF 表达式,但我无法让它工作。任何帮助都会很棒。

使用普通 SQL 我认为这就是您正在寻找的查询

SELECT
    bt.GroupID as 'ID',
    bt.EventStartTime as 'StartStartTime',
    bt.EventEndTime as 'StartEndTime',
    bt.TotalEventDuration as 'StartDuration',
    pt.EventStartTime as 'ProcessStartTime',
    pt.EventEndTime as 'ProcessEndTime',
    pt.TotalEventDuration as 'ProcessDuration',
    st.EventStartTime as 'StopStartTime',
    st.EventEndTime as 'StopEndTime',
    st.TotalEventDuration as 'StopDuration'
FROM
    PROCESS_LOG bt
    LEFT JOIN PROCESS_LOG pt ON
        bt.GroupID = pt.GroupID
    LEFT JOIN PROCESS_LOG st ON
        bt.GroupID = st.GroupID
WHERE
    bt.Event = 'Start'
AND pt.Event = 'Process'
AND st.Event = 'Stop'

我假设您必须开始才能处理 and/or 停止,这似乎不切实际。 这个想法是加入 table 3 次以提取每个事件的信息,GroupID 是 'glue' 来关联它们。