У меня есть сводная таблица, которая преобразует вертикальную структуру базы данных к горизонтальному:Подсчета и группировка вызова в сводной таблице с T-SQL
Источника таблица:
Id ParentId Property Value
---------------------------------
1 1 Date 01-09-2015
2 1 CountValue 2
3 1 TypeA Value1
4 1 TypeB Value2
5 1 TypeC Value2
6 2 Date 15-10-2015
7 2 CountValue 3
8 2 TypeA Value3
9 2 TypeB Value22
10 2 TypeC Value99
После поворота это выглядит как:
ParentId Date CountValue TypeA TypeB TypeC
----------------------------------------------------------
1 01-09-2015 2 Value1 Value2 Value2
2 15-10-2015 3 Value3 Value22 Value99
Тогда есть таблица поиска для действительных значений в столбцах TypeA
, TypeB
и TypeC
:
Id Name Value
-----------------
1 TypeA Value1
2 TypeA Value2
3 TypeA Value3
4 TypeB Value20
5 TypeB Value21
6 TypeB Value22
7 TypeC Value1
8 TypeC Value2
Таким образом, с учетом приведенной выше структурой Я ищу способ запросить сводную таблицу таким образом, что я буду получать количество всех недопустимых значений в TypeA
, TypeB
и TypeC
где Date
является действительным дата и CountValue
не пусто и больше 0.
Как можно достичь результата, который, как ожидается, и выдается, как показано ниже:
Count Column
--------------
0 TypeA
1 TypeB
1 TypeC
я достиг результата, создав три несколько запросов и склейте результаты с помощью UNION, но я думаю, что это также должно быть возможно с помощью сводной таблицы, но я не уверен, как это сделать. Можно ли реализовать желаемый результат с помощью сводной таблицы?
Примечание: в базе данных используется база данных SQL Server 2005.
Это занимает некоторое время, чтобы понять, как это работает. Спасибо за ваш исчерпывающий ответ. Я преобразовал имена образцов в свою реальную ситуацию (вертикальная таблица содержит более 1.300 уникальных элементов «Свойство»). Я действительно считаю, что таблица PIVOT не была правильным способом решить ее в конце, но я начал оттуда, чтобы заставить стол вращаться. Спасибо, +1, и согласился также с учетом критериев Date и CountValue. – Ben