Как написать запрос, чтобы показать результаты только для активов, которые имеют четыре значения в 4 метках? - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь создать запрос для отображения меток и их значений для активов. Метки должны быть («Идентификатор диска», «Lube 1 Spec.», «Lube 1 Vol.», «Lube 2 Spec.», «Lube 2 Vol.»). некоторые записи могут иметь нулевые значения для некоторых меток. Я хотел бы получить только записи, которые получили 5 меток для каждого актива со значениями в нем.

select a.AssetTypeUserDefinedLabel AS Label, 
       v.AssetTypeUserDefinedValue AS Value, 
       v.AssetID
from AssetTypeUserDefined a 
   inner join AssetTypeUserDefinedValues v on 
a.AssetTypeUserDefinedID = v.AssetTypeUserDefinedID
where a.AssetTypeUserDefinedLabel in ('Drive ID','Lube 1 Spec.','Lube 1 
Vol.','Lube 2 Spec.','Lube 2 Vol.') 
  and v.AssetTypeUserDefinedValue <> ''
order by v.AssetID, a.SequenceNumber

вывод должен выглядеть так для каждого актива:

Label           Value                         AssetID
----------------------------------------------------------
Drive ID    020-D-073(A), 020-D-074(B)        79
Lube 1 Spec.    Chain - NSF H1 / ISO 1000     79
Lube 1 Vol. Spray Applied weekly              79
Lube 2 Spec.    Adjusters -                   79
Lube 2 Vol. At Service                        79

Я пытаюсьполучить записи, которые имеют все 5 меток, как показано ниже, без нулевого значения. поэтому для каждого идентификатора актива я получаю 5 записей

snapshot for required output

1 Ответ

0 голосов
/ 09 октября 2019

Если я правильно понимаю, вам нужен простой пункт -

select a.AssetTypeUserDefinedLabel AS Label
      ,v.AssetTypeUserDefinedValue AS Value
      ,v.AssetID
from AssetTypeUserDefined a
inner join AssetTypeUserDefinedValues v on a.AssetTypeUserDefinedID = v.AssetTypeUserDefinedID
where a.AssetTypeUserDefinedLabel in ('Drive ID','Lube 1 Spec.','Lube 1 Vol.','Lube 2 Spec.','Lube 2 Vol.') 
and v.AssetTypeUserDefinedValue <> ''
group by a.AssetTypeUserDefinedLabel
        ,v.AssetTypeUserDefinedValue
        ,v.AssetID
having(distinct count v.AssetID) = 5 
order by v.AssetID
        ,a.SequenceNumber
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...