In my table I have rows, and each row has some data and its version. For example id col1 col2 col3 col4 priority 1 A NULL B NULL 1 1 NULL K NULL NULL 2 1 NULL C D NULL 3 the result should be: id col1 col2 col3 col4 1 A C D NULL what logic is used here? It's simple, when column is not-null, it overrides an old value otherwise nothing happens. Pseudocode (in C#) var resultTable = new List<Row>(); foreach (var group in table.GroupBy(x => x.ID).Select(g => g.OrderBy(x => x.Priority))) { var row = Row.GetEmpty(); foreach (var anotherRow in group) { foreach (var column in group.Columns) { if (column.GetValue(anotherRow) != null) column.SetValue(row, anotherRow); } } resultTable.Add(row); } How could it be done with standard SQL features? I saw someone who suggested use SQLCLR, but I want to avoid it if possible.