У меня есть таблица с текстовым полем. Я создал запрос, который берет длину данных этих полей и в основном возвращает гистограмму.
SELECT TEXTFieldSize, COUNT(TEXTFieldSize) AS Count FROM (SELECT DATALENGTH(data) AS TEXTFieldSize FROM table) AS Fields GROUP BY TEXTFieldSize ORDER BY TEXTFieldSize;
________________
| Length | Count |
| 1 | 5 |
| 3 | 2 |
| 6 | 12 |
|________|_______|
Моя проблема в том, что для правильного анализа мне также нужны строки для значений, у которых счетчик равен нулю.
SELECT ???
________________
| Length | Count |
| 1 | 5 |
| 2 | 0 |
| 3 | 2 |
| 4 | 0 |
| 5 | 0 |
| 6 | 12 |
|________|_______|
Заранее спасибо!
Создать таблицу чисел (способ SQL Server)
CREATE TABLE dbo.Numbers (Num int NOT NULL PRIMARY KEY)
INSERT dbo.Numbers (Num)
SELECT TOP 8000 ROW_NUMBER() OVER (ORDER BY C1.column_id)
FROM sys.columns C1 CROSS JOIN sys.columns C2
Ответ:
SELECT N.Num AS TEXTFieldSize, COUNT(t.data) AS CountOf
FROM
dbo.Numbers N
LEFT JOIN
mytable t ON N.Num = DATALENGTH(t.data)
WHERE
N.Num <= (SELECT MAX(DATALENGTH(data)) FROM mytable)
GROUP BY N.Num
ORDER BY N.Num;