Mam widok sql, nazwijmy go SampleView
, którego wyniki mają następujący format.Grupa tsql pobiera wartość kolumny alfanumerycznej o maksymalnej długości
Id (INT), NameA (VARVHAR(50)), NameB (VARCHAR(50)), ValueA (INT), ValueB (INT)
Zestaw wyników widoku zawiera wiersze, które mogą mieć ten sam Id
lub nie. Gdy istnieją dwie lub więcej wierszy z tym samym identyfikatorem, chciałbym dostać coś następnego
SELECT
Id,
MAX(NameA),
MAX(NameB),
MAX(ValueA),
MAX(ValueB)
FROM SampleView
GROUP BY Id
ORDER BY Id
Odnośnie kolumn Id
, ValueA
i ValueB
nie ma żadnego problemu. Z drugiej strony używanie MAX
zarówno dla NameA
i NameB
rzeczy nie są zgodne z oczekiwaniami. Po przeszukaniu i przeszukaniu zdałem sobie sprawę, że MAX
nie ma "oczekiwanego" zachowania dla kolumn alfanumerycznych. Mówiąc o spodziewanym, mam na myśli użycie MAX
w moim przypadku, byłoby zwrócić wartość NameA
z maksymalną liczbą znaków, MAX(LEN(NameA))
. Muszę tu wspomnieć, że nie ma żadnej możliwości, aby NameA
miał dwie wartości dla tego samego Id
o tej samej długości. To może sprawić, że problem będzie łatwiejszy do rozwiązania.
Używam SQL Server 2012 i TSQL
.
Czy masz jakieś sugestie, w jaki sposób mogę poradzić sobie z tym problemem?
Z góry dziękuję bardzo za pomoc.
Dziękuję bardzo! To, że chcę :) – Christos