У меня есть друг, который использует c # Linq, чтобы сообщить о следующей таблице:
varchar(50) name
datetime when
Клиент хочет выбрать, какие столбцы следует суммировать, например, Итого за этот год, Итого за прошлый год, Итого за две недели назад и т. Д. В каждом столбце будет время начала и окончания, которое они будут суммировать с помощью счетчика. Я сделал быстрое заявление для него:
select A.name as [Name],
(select count(*) from mytable B where A.name = B.name and
datepart(yy, when) = datepart(yy,getdate())) as [This Year],
(select count(*) from mytable B where A.name = B.name and
datepart(yy, when) = (datepart(yy,getdate()) - 1)) as [Last Year]
from (select distinct name from mytable) A
Я также предложил ему сделать каждое поле вычисления делегатом, чтобы он мог содержать беспорядок вычислений вне запроса. Предполагая, что у каждого делегата будет дата начала и окончания, которая подсчитывает, сколько обращений происходит для каждого отдельного Имени, кто-нибудь захочет попробовать, как будет выглядеть код Linq c #?