#sql #sql-server
#sql #sql-сервер
Вопрос:
Использование SQL Server 2000
Таблица1
Column1
20
30
40
20
40
30
30
Я хочу считать так
20 - 2
30 - 3
40 - 2
В случае, если значение столбца 20 или 30 или 40 недоступно, оно должно отображать 20 - 0
или 30 - 0
или 40 - 0
.
Например
Column1
20
30
20
30
30
Ожидаемый результат
20 - 2
30 - 3
40 - 0
Я получу только 20, 30. 40. Больше значения не будет.
Как сделать запрос
Нужна помощь
Комментарии:
1. Вы пробовали использовать
COUNT
оператор?
Ответ №1:
select item,count (item) from table group by item
РЕДАКТИРОВАТЬ: (после вашего редактирования)
CREATE TABLE #table1 ( numbers int )
insert into #table1 (numbers) select 20
insert into #table1 (numbers) select 30
insert into #table1 (numbers) select 40
SELECT [num]
FROM [DavidCard].[dbo].[sssssss]
select numbers,count (num) from #table1 LEFT JOIN [sssssss] ON #table1.numbers = [sssssss].num group by numbers
Комментарии:
1. @Gopal, ты также снял галочку с моего ответа, в следующий раз открывай новый вопрос 🙂
Ответ №2:
SQL-запрос 101:
SELECT Column1, COUNT(*)
FROM dbo.YourTable
GROUP BY Column1
ORDER BY Column1
Обновление: если вы хотите получить список возможных значений и их потенциальное количество (или 0) в другой таблице, вам нужны две таблицы, в основном — одна со всеми возможными значениями, одна с фактическими значениями — и a LEFT OUTER JOIN
, чтобы объединить их — что-то вроде:
SELECT
p.Column1, ISNULL(COUNT(t.Column1), 0)
FROM
(SELECT 20 AS 'Column1'
UNION
SELECT 30
UNION
SELECT 40) AS p
LEFT OUTER JOIN
dbo.YourTable t ON t.Column1 = p.Column1
GROUP BY
p.Column1
ORDER BY
p.Column1
Комментарии:
1. Ваш запрос работает, например, если в таблице отсутствует столбец 20, это означает, что он должен отображать 20 — 0, как это сделать
2. @GOpal: если «20» там нет — должен ли запрос знать, что там должна быть строка «20 — 0» (а не «21 — 0» или «25 — 0»)? Вы не можете этого сделать — вы можете считать только то, что действительно есть в вашей таблице…