Как вставить строку, когда данных не существует

Если вы используете IIS 8.5, возможно, вам нужно изменить параметр ApplicationPool ID из ApplicationPoolId в NetworkService

Щелкните правой кнопкой мыши на пуле приложений, нажмите «Дополнительные настройки», а затем прокрутите вниз для ID - вероятно, он будет установлен в ApplicationPoolIdentity. Нажмите кнопку (..) и выберите NetworkService из выпадающего списка.

Также убедитесь, что если это приложение .NET 2.0, вы не ссылаетесь на фреймворк 4.0 в своем пуле приложений.

1
задан scsimon 16 January 2019 в 21:28
поделиться

1 ответ

Вы можете использовать cross apply для создания подмножества городов и дат, а join - для вашей фактической таблицы. Обычно вы используете таблицу календаря, но здесь, кажется, вам нужны только даты, когда хотя бы в одном городе была запись.

declare @table table (city varchar(64), NoOfRecords int, [Date] date)
insert into @table
values
('Paris',15,'1/16/2018'),
('Rio',20,'1/16/2018'),
('Munich',10,'1/16/2018'),
('New York',25,'1/16/2018'),
('Paris',15,'1/18/2018'),
('Rio',20,'1/18/2018'),
('Munich',15,'1/18/2018'),
('Paris',15,'2/18/2018'),
('New York',20,'2/18/2018'),
('Munich',30,'2/18/2018')

select distinct
    x.city
    ,coalesce(t.NoOfRecords,0)
    ,x.Date
from (
        select 
            distinct x.city, y.Date
        from @table x
        cross apply (select distinct date from @table) y
        )  x
left join
    @table t on t.city =

Или с cross join в производной таблице.

select distinct
    x.city
    ,coalesce(t.NoOfRecords,0)
    ,x.Date
from (
        select 
            distinct x.city, y.Date
        from @table x
        cross join @table y
        )  x
left join
    @table t on t.city = x.city and t.Date = x.Date
0
ответ дан scsimon 16 January 2019 в 21:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: