Вы можете просто использовать Object.entries()
и Array.reduce()
var fields = {
"name":"andy",
"age" : null,
"email" : null,
"status" : true
};
var result = Object.entries(fields).reduce((a,[key,val])=>{
if(val)
a.push({name : key, value : val});
return a;
},[]);
console.log(result);
Выход:
blockquote >[ { "name": "name", "value": "andy" }, { "name": "status", "value": true } ]
Вам нужно использовать что-то, что DB2 вызывает OLAP-функции (другие движки RDMS обычно называют их оконными функциями - оба термина действительны). Функция OLAP позволяет вам возвращать аналитические данные о строке, например, что это за номер в отсортированном списке.
Для вашего запроса вы хотите вернуть только первую строку для каждого человека, поэтому мы используем функцию OLAP под названием ROW_NUMBER()
. Когда мы используем эту функцию, мы хотим разделить данные Col1 / Col2 (т.е. мы группируемся по этим данным), а затем выполнить обратную сортировку по Col3, чтобы получить последний результат. После этого мы хотим выбрать строки, которые имеют верхнее значение в функции OLAP, например:
SELECT *
FROM (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY Col1, Col2 ORDER BY Col3 DESC) AS rn
FROM schema.table
) AS ranked_scenarios
WHERE rn = 1