T-SQL Как выбрать количество значений одного столбца, если значения другого столбца совпадают - PullRequest
0 голосов
/ 21 марта 2019

Как выбрать количество меток, где деталь одинакова?

Part  |  Label
------+-------
  a   |    L1
  a   |    L2
  a   |    L3
  b   |    L1
  b   |    L2  

Ожидаемые результаты:

Part  |  LabelCount
------+------------
  a   |    3
  b   |    2

Примечания. Все типы данных являются строками. Я пытался разделить, чтобы получить максимальный номер строки, но функция MAX в ROW_NUMBER () не отвечает, как я это делал, и он просто возвращал все строки, использую ли я MAX или нет.

;WITH RowNumCTE AS 
(
    SELECT
        [PartName],
        ROW_NUMBER() OVER (PARTITION BY [Part] ORDER BY [Label] ASC) AS rn
    FROM 
        [PartTable]
)
SELECT DISTINCT   
    [Part],
    MAX([rn]) AS [LabelCount]
FROM
    RowNumCTE
GROUP BY
    [Part], [rn]

Фактические результаты:

Part  |  LabelCount
------+------------
  a   |    1
  a   |    2
  a   |    3
  b   |    1
  b   |    2

Я просмотрел список похожих вопросов в StackOverflow, например на этот , но не понимаю, как применить ответы к этой ситуации.

Ответы [ 3 ]

2 голосов
/ 21 марта 2019

Вы, кажется, просто хотите group by:

select part, count(*) as labelcount
from t
group by part;

Если у вас есть дубликаты надписей на детали, то:

select part, count(distinct label)
. . .
0 голосов
/ 21 марта 2019

Ваш подход к ожидаемому о / п неверен и очень сложен.

Ваше желаемое o / p не связано с подразделением групп, как вы делали с помощью разделов и т. Д., Но было довольно просто group by, как уже было сказано выше.

      select part,count(*) from t 
       group by part -- as only partwise 
       count is required
0 голосов
/ 21 марта 2019

простая группа по

select part,count(*) from t 
group by part
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...