У меня есть база данных Microsoft SQL Server 2008, в которой есть таблица с несколькими записями в одном столбце varchar, разделенные запятой.SQL Server - укажите количество вхождений для определенных строк в столбце
В качестве примера:
----------------------
| Resource_List |
----------------------
| Danny |
| Gavin, Danny |
| Bob, Gavin, Mark |
| Bob |
| Bob |
----------------------
Я пытаюсь построить запрос, который подсчитывает, сколько раз эти строки специфичных существующие:
В качестве примера выхода я после:
----------------------------------
| Name | Count |
----------------------------------
| Danny | 2 |
| Gavin | 2 |
| Mark | 1 |
| Bob | 3 |
----------------------------------
Известны имена в Resource_List
, поэтому я не возражаю, если я должен специально добавить их в поисковый запрос. Но возможность динамического определения имен будет более элегантной.
Что касается самой таблицы - ее сторонний продукт, который я допрашиваю, потому что отчетность на нем плохая, поэтому у меня нет возможности нормализовать данные в таблице на 1: M независимо от того, что может быть динамически выполнено в рамках стандартного запроса.
Любая помощь в построении запроса будет оценена по достоинству.
Cheers. Courtenay
Что произойдет, если у вас есть строка в одной строке 'Bob, Frank, Bob'? Делает ли это «Боб» один или два раза? Вы считали, что не заполняете JSON в своей базе данных? –
Как немного больше фона, таблица представляет собой список заданий, а resource_list используется для указания того, какие люди назначены заданию. Приложение, которое находится поверх БД, позволит только каждому добавить человека, поэтому я не верю, что у меня когда-нибудь было бы место, где человек дважды был указан в одном поле. Кроме того, каждое имя уникально, поэтому мы не должны видеть двойных всплесков в одном поле. – Courtenay
Я все еще думаю, что это может быть спроектировано намного лучше, например. почему бы не иметь таблицу, которая уже начинается с «CREATE TABLE dbo.JobResources (JobID, UserID);», которая относится к «Заданиям» и «Пользователям»? Теперь ваша жизнь намного проще для таких запросов, и вам не нужно хранить или анализировать неуправляемые списки, разделенные запятыми. Решение ниже будет работать, но оно очень, очень далекое от оптимального. –