Колонка «Мне нравится описание» и сумма, основанная на оборудовании - PullRequest
0 голосов
/ 04 ноября 2019

В SQL Server я пытаюсь сгруппировать оборудование и затем подсчитать «похожие» описания, чтобы получить вхождения. Кто-нибудь делал что-нибудь подобное?

Select 
    Equip, Count like Description, 
from
    WorkOrder (nolock) 
where 
    DateTm Between DATEADD(month, DATEDIFF(month, 0, getDate()), 0) and DATEADD(month, DATEDIFF(month, -1, getDate()), -1)
Group by 
    Equip, Description 
order by 
    Equip Asc

Ответы [ 3 ]

0 голосов
/ 04 ноября 2019

Я думаю, что вы пытаетесь сделать это, чтобы получить те же description за Equip. Вы можете group by и having предложение для этого требования.

select description
    , Equip
    , count(Equip) 
from WorkOrder (nolock) 
where DateTm Between dateadd(month, DATEDIFF(month, 0, getDate()), 0) 
    and dateadd(month, DATEDIFF(month, -1, getDate()), -1)
group by description, Equip 
having count(description) > 1
0 голосов
/ 04 ноября 2019
WITH cte 
 AS (SELECT equip, 
            description, 
            CASE 
              WHEN description LIKE '%part was struck%' 
                    OR description LIKE '%Struck part%' THEN 'STRUCK PART' 
              WHEN description LIKE '%FAILURE%' THEN 'FAILURE' 
              ELSE 'RANDOM' 
            END AS DESCRIPTION_GROUP 
     FROM   workorder (nolock) 
     WHERE  datetm BETWEEN Dateadd(month, Datediff(month, 0, Getdate()), 0) 
                           AND 
                                   Dateadd(month, Datediff(month, -1, 
                                                  Getdate()), 
                                   -1 
                                   )) 
SELECT equip, 
       description_group, 
       Count(*) 
FROM   cte 
GROUP  BY equip, 
          description_group 
ORDER  BY equip ASC 
0 голосов
/ 04 ноября 2019

Это должно работать. Если вы хотите выполнить поиск по списку описаний, добавьте класс where с описанием, например.

    Select Equip,Description, count(*) as Count, 
                from WorkOrder (nolock) 
    where DateTm Between DATEADD(month, DATEDIFF(month, 0, getDate()), 0) and 
DATEADD(month, DATEDIFF(month, -1, getDate()), -1)
                Group by Equip,Description order by Equip Asc
...