Без использования агрегатной функции мы можем сделать pivot в SQL

name является свойством window

notName, пока он не будет определен как таковой

var output = "window.name: " + window.name + "\r\n" + "name: " + name;
alert(output);

0
задан Niranjan S 4 March 2019 в 12:26
поделиться

1 ответ

Нет, невозможно PIVOT обойтись без агрегатной функции, но вы можете сделать агрегатную функцию произвольной, обеспечив только одну исходную строку на группу. Из вашего вопроса не сразу понятно, в чем заключается ваша логика:

Например, у вас есть два значения для времени 12 (KA108112 и KA106360) и 3 строки для времени 13 (TN04F6726, TN28C3709, TN52C4788), так что есть несколько разных способов объединить эти два.

Вы можете вернуть декартово произведение:

12          13
----------------------
KA108112    TN04F6726
KA106360    TN04F6726
KA108112    TN28C3709
KA106360    TN28C3709
KA108112    TN52C4788
KA106360    TN52C4788

Или вы можете вернуть каждый результат один раз, например

12          13
----------------------
KA106360    TN04F6726
KA108112    TN28C3709
NULL        TN52C4788

Но вам также необходимо предоставить дополнительную логику, то есть, почему KA106360 будет соответствовать TN04F6726, а не любому из двух других значений (в приведенном выше примере у меня есть ordererd Trailer_RegNo в алфавитном порядке каждый раз, но может быть любое количество способов сделать это.

Исходя из вашего комментария, кажется, что вы хотите произвольно спарить значения, поэтому, чтобы убедиться, что каждое значение представлено, вам нужно сделать каждую строку уникальной , что вы можете сделать, используя ROW_NUMBER(), например

DECLARE @T TABLE (Time INT, Trailer_RegNo VARCHAR(20));
INSERT @T (Time, Trailer_RegNo)
VALUES (12, 'KA108112'), (12, 'KA106360'), (13, 'TN04F6726'), (13, 'TN28C3709'), (13, 'TN52C4788');

SELECT  Trailer_RegNo, 
        Time,
        RowNumber = ROW_NUMBER() OVER(PARTITION BY [Time] ORDER BY Trailer_RegNo) 
FROM    @T;

, что дает:

Trailer_RegNo   Time    RowNumber
----------------------------------
KA106360        12      1
KA108112        12      2
TN04F6726       13      1
TN28C3709       13      2
TN52C4788       13      3

Теперь у вас есть способ сопряжения ваших предметов (например, KA106360 и TN04F6726, KA108112 и amp ; TN28C3709 и т. Д.) Чтобы изменить порядок группировки элементов, вам просто нужно изменить предложение ORDER BY в функции ROW_NUMBER().

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

[114 ]
0
ответ дан GarethD 4 March 2019 в 12:26
поделиться
Другие вопросы по тегам:

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