объединить две таблицы в один набор результатов SQL Server

У меня есть хранимая процедура, которая десериализует строку XML и добавляет ее в таблицу в виде;

MonthDate        floatValue
01/01/2014       10,123.23
02/03/2014       11,324.34

и так далее. Затем у меня есть набор смоделированных результатов, которые мне нужны, чтобы соответствовать этим датам, но они находятся в наборе данных с разделителями-запятыми, который формируется следующим образом;

[123.43,125.34,134.33],[124.33,143.33,234.22],etc..

Я написал функцию, которая анализирует строку в таблице из 1 столбца и групповых идентификаторов этих данных, которая выглядит следующим образом:

tempID        floatValue
1             123.43
1             125.34
1             134.33
2             124.33
2             143.33
2             234.22

Я попытался использовать сводные таблицы для этого второго набора данных, но агрегация разрушает наборы данных, поскольку мне нужно, чтобы они были в их определенном порядке, чтобы коррелировать с датами в моем первом десериализованном XML-результате. В основном то, что я хочу для результата, это что-то вроде;

MonthDate     MedianResult    temp1    temp2    etc..
01/01/2014    10,123.23       123.43   124.33
02/03/2014    11,324.34       125.34   143.33

Это действительно лучшее, что я могу объяснить, у меня есть запросы, написанные для получения наборов результатов, которые я показал, но я понятия не имею, как «объединить» две таблицы, чтобы получить то, что я ищу.


person Nick G    schedule 25.04.2014    source источник
comment
функция, которая анализирует строку в таблице из 1 столбца и идентификаторов группы, может ли она быть изменена, чтобы добавить идентификатор последовательности 1,2,3, чтобы обеспечить правильный порядок применения к значениям с плавающей запятой, или значение с плавающей запятой всегда будет наименьшим до наибольший? Если вы добавите 1,2,3, оператор case может дать вам желаемые результаты, используя 1,2,3; в противном случае вам придется использовать псевдо- или временное значение для поддержания порядка; и выбор не может гарантировать тот же порядок, что и вставка... поэтому помогает знание определенного порядка или того, что он всегда от низшего к высшему.   -  person xQbert    schedule 25.04.2014


Ответы (1)


Вы пытались добавить разделенный идентификатор и выполнить поворот оттуда? Конечно, этот пример будет сортировать значения по возрастанию, но концептуально это начало?

ROW_NUMBER() OVER (PARTITION BY [tempID] ORDER BY [floatValue]) AS [RowNumber]
person Karl Kruse    schedule 26.04.2014
comment
Я решил пойти другим путем, чем использовать сводную таблицу. Поскольку я динамически создаю обе таблицы для слияния, я решил использовать автоинкрементную идентификацию в исходной таблице MonthDate и создать отдельную строку идентификатора, которая увеличивается на общее количество строк для каждого tempID. таким образом, каждый tempID (2-12) также будет иметь столбец идентификатора от 1 до 113 (или более), который точно соответствует идентификатору даты. Затем я просто присоединяюсь к таблицам по идентификатору, и это прекрасно работает. - person Nick G; 28.04.2014