SQL Server Query? - PullRequest
       1

SQL Server Query?

1 голос
/ 28 декабря 2011

Пожалуйста, помогите мне найти лучшее решение для этой головоломки?

Как мне перейти из этой таблицы сюда:

ID_LOCAL ID_STATUS
-------- ---------
65       0 
65       0 
65       0
65       0
65       0
65       0
65       0
65       1
65       2
93       0
96       0
186      1

К этому результату здесь:

ID_LOCAL TOTAL ID_STATUS=0 ID_STATUS=1 ID_STATUS=2
-------- ----- ----------- ----------- -----------
65       9     7           1           1 
93       1     1           0           0
96       1     1           0           0
186      1     0           1           0

Ответы [ 3 ]

2 голосов
/ 28 декабря 2011
select ID_LOCAL,
       count(*) as Total,
       count(case when ID_STATUS = 0 then 1 end) as Status0,
       count(case when ID_STATUS = 1 then 1 end) as Status1,
       count(case when ID_STATUS = 2 then 1 end) as Status2
from YourTable
group by ID_LOCAL
0 голосов
/ 28 декабря 2011

Также вы можете использовать оператор SQL Server PIVOT .

0 голосов
/ 28 декабря 2011

Предполагая, что ваше имя таблицы Table

select 
  ID_LOCAL,
  count(*) as TOTAL,
  (SELECT COUNT(*) from Table WHERE ID_LOCAL = outr.ID_LOCAL AND ID_STATUS=0) AS [ID_STATUS=0],
  (SELECT COUNT(*) from Table WHERE ID_LOCAL = outr.ID_LOCAL AND ID_STATUS=1) AS [ID_STATUS=1],
  (SELECT COUNT(*) from Table WHERE ID_LOCAL = outr.ID_LOCAL AND ID_STATUS=2) AS [ID_STATUS=2]
FROM Table outr
GROUP BY ID_LOCAL

OR

select 
  ID_LOCAL,
  count(*) as TOTAL,
  SUM(CASE ID_STATUS WHEN 0 THEN 1 ELSE 0 END) AS [ID_STATUS=0],
  SUM(CASE ID_STATUS WHEN 1 THEN 1 ELSE 0 END) AS [ID_STATUS=1],
  SUM(CASE ID_STATUS WHEN 2 THEN 1 ELSE 0 END) AS [ID_STATUS=2],
FROM Table
GROUP BY ID_LOCAL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...