Не удалось получить отдельные строки из столбца в зависимости от состояния другого столбца на сервере SQL - PullRequest
2 голосов
/ 09 мая 2020

Я новичок в SQL, и у меня есть большая таблица my_table с тысячами строк. Ниже приведен пример:

 Id           JsonObject
  1           {"Pricing":{"PricingRule":Rule1}}
  1           {"Pricing":{"PricingRule":Rule2}}
  2           {"Pricing":{"PricingRule":Rule1}}
  3           {"Pricing":{"PricingRule":Rule4}}       
  3           {"Pricing":{"PricingRule":Rule1}}
  4           {"Pricing":{"PricingRule":Rule1}}
  4           {"Pricing":{"PricingRule":Rule9}}
  5           {"Pricing":{"PricingRule":Rule1}}
  6           {"Pricing":{"PricingRule":Rule10}}

То, что я хочу в выводе, следующее:

 Id              JsonObject
  2              {"Pricing":{"PricingRule":Rule1}}
  5              {"Pricing":{"PricingRule":Rule1}}

По сути, мне нужны уникальные идентификаторы, которые следуют за PricingRule как Rule1 из столбец JsonObject. Я пробовал следующий код:

select Id, JsonObject  
from my_table 
where json_value(JsonObject, '$.Pricing.PricingRule') = 'Rule1'

1 Ответ

1 голос
/ 09 мая 2020

Попробуйте следующее, вот демонстрация .

select
  Id,
  JsonObject
from
(
  select 
    *,
    count(*) over (partition by id) as total
  from Table1 
) val
where json_value(JsonObject, '$.Pricing.PricingRule') = 'Rule1'
and total = 1

Вывод:

*-----------------------------------------*
| Id      JsonObject                      |
*-----------------------------------------*
| 2   {"Pricing":{"PricingRule":"Rule1"}} |
| 5   {"Pricing":{"PricingRule":"Rule1"}} |
*-----------------------------------------*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...