У меня есть данные о том, что люди сменили роль в середине месяца и хотят подсчитать активность после новой даты начала. Могу ли я использовать результаты таблицы в качестве динамического запроса, у меня есть запрос, который возвращает следующий набор результатов: -

Firstname    Surname    StartDate
----------------------------------
Jon          Smith      2015-01-01
Paul         Jones      2014-07-23
...

Таким образом, запрос будет выглядеть примерно так:

SELECT Firstname +' '+ surname, month,  count(1) FROM dataTable
WHERE (Firstname='John' AND Surname='Smith' AND date >=2015-01-01)
OR (Firstname='Paul' AND Surname='Jones' AND date >=2014-07-23)
OR ...

Но количество «ИЛИ» будет зависеть от количества строк в первой таблице

Name        Month   Count
----------------------------------
Jon Smith   1       15
Paul Jones  1       16
Jon Smith   2       30
Paul Jones  2       25
Charlie Gu  1       52 

Что я могу затем повернуть, чтобы получить

Name          1      2
--------------------------
Jon Smith     15     30
Paul Jones    16     25
Charlie Gu    52     NULL

Заранее спасибо

0
Spufferoo 11 Фев 2015 в 13:22

2 ответа

Лучший ответ

Мне кажется, что Ako правильно, и простое соединение должно помочь, а не динамический запрос.

declare @NewStartDates table
    (
     Firstname nvarchar(100),
     Surname nvarchar(100),
     StartDate date
    );

insert  into @NewStartDates
        (Firstname, Surname, StartDate)
values  (N'Jon', N'Smith', '20150101'),
        (N'Paul', N'Jones', '20140723');

select  d.Firstname,
        d.Surname,
        year(d.Date) * 100 + month(d.Date) as Period,
        count(*) as ActivityCount
from    dataTable as d
inner join @NewStartDates as n
        on d.Firstname = n.Firstname
           and d.Surname = n.Surname
           and d.Date >= n.StartDate
group by d.Firstname,
        d.Surname,
        year(d.Date) * 100 + month(d.Date);
1
Community 23 Май 2017 в 11:56

Пожалуйста, обратитесь к этому - он даст вам полное представление о том, как получить запрос динамического столбца. Создание динамических столбцов - сводная таблица [SQL]

0
Abhishek Gupta 26 Окт 2017 в 11:27