Dans SQL Server, j'essaie de regrouper l'équipement, puis de compter les descriptions «similaires» pour obtenir les occurrences. Quelqu'un a-t-il fait quelque chose comme ça?

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
0
JShaffer 4 nov. 2019 à 02:26

3 réponses

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
Viswa 4 nov. 2019 à 15:26

Cela devrait fonctionner. Si vous souhaitez rechercher avec une liste de descriptions, ajoutez la classe where avec une description comme.

    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
0
Viswa 3 nov. 2019 à 23:42

Je pense que ce que vous essayez de faire est d'obtenir ceux qui ont le même description par Equip. Vous pouvez group by et having clause pour cette exigence.

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
ϻᴇᴛᴀʟ 4 nov. 2019 à 00:13