* Отредактировано для более подробного объяснения ... * Мне нужны значения одного столбца в SQL, но эти значения разделены на количество различных значений - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть запрос, который я пытаюсь составить для результатов опроса. Вопросы хранят целые числа в диапазоне 1-5, в зависимости от того, что выбирает конечный пользователь. Они хранятся в отдельных столбцах в моей таблице ответов (например, StaffRelationships, StaffQuality, StaffInfo), и каждый из них будет хранить значение 1-5 в зависимости от того, как их оценивает конечный пользователь.

То, что я пытаюсь сделать, это создать запрос, чтобы перечислить, сколько КАЖДОГО целочисленного ответа на каждый вопрос.

Так что для StaffRelationships я хочу показать, сколько набрал 1, 2, 3, 4 или 5, и отобразить это.

У меня сейчас есть:

select distinct StaffRelationships

From FamilySatisfactionResponses

Что возвращает:

   StaffRelationships
1        1
2        2 

У меня есть 3 записи для этого вопроса в моей базе данных, со значениями 1,2 и 1. Поэтому мне нужно показать, что там было 2 человека с оценкой 1 и 1 человек с оценкой 2.

Хотя я немного растерялся, как это сделать. Есть предложения?

редактировать, поскольку мне, видимо, не хватает информации ....

StaffRelationships - это один столбец в таблице с именем FamilySatisfactionResponses. У меня есть несколько столбцов в этой таблице (опять же ... например ... StaffRelationships, StaffQuality, StaffInfo) Эти столбцы содержат целое число. Это в конечном итоге будет извлечено из VB. Существует веб-форма, где они используют ползунок, чтобы выбрать число 1-5, чтобы оценить их удовлетворенность тем, что спрашивают. Это число сохраняется как целое число в соответствующем столбце вопроса. В этом случае целые числа 1,2 и 1 сохраняются в StaffRelationships в 3 разных строках. Выбор 1000 лучших строк моих FamilySatsfactionResponses выглядит следующим образом:

first name   last name   email.........StaffRelationships
Sally        Jones       example@email.com  1
bob          vance       another@email.com  2
jane         doe         email@email.com    1

Итак, я сохранил целые числа в StaffRelationships. Я пытаюсь создать хранимую процедуру для вывода, сколько из каждого возможного результата 1-5 в этом столбце. Таким образом, когда мы создаем веб-форму, чтобы показать соответствующему департаменту результаты опроса, они могут видеть, сколько людей оценили этот вопрос как 1, 2, 3, 4 или 5. Как указывалось выше, я попытался использовать разные, и он тянет, что показано. Я знаю, что это не все, что мне нужно, но я ищу направление на то, куда идти из того, что я пытаюсь.

Надеюсь, это достаточно объяснено ......

1 Ответ

0 голосов
/ 12 апреля 2019

Это тот случай, когда вам нужно очень четко подумать о том, что вы хотите.Когда вы разберете свои комментарии выше, вы, похоже, захотите вывод, который будет выглядеть примерно так:

QuestionName        1    2    3    4    5
-------------      ---  ---  ---  ---  ---
StaffRelationships  2    1    0    0    0

Предполагая, что это правильно, этот запрос предоставит этот вывод.ПРИМЕЧАНИЕ: это только один из возможных способов сделать это.Доступны и другие, некоторые из которых могут быть лучше, чем этот.

SELECT 
    'StaffRelationships' AS QuestionName,
    SUM(CASE
        WHEN StaffRelationships = 1
            THEN 1
        ELSE 0
    END AS [1],
    SUM(CASE
        WHEN StaffRelationships = 2
            THEN 1
        ELSE 0
    END AS [2],
    SUM(CASE
        WHEN StaffRelationships = 3
            THEN 1
        ELSE 0
    END AS [3],
    SUM(CASE
        WHEN StaffRelationships = 4
            THEN 1
        ELSE 0
    END AS [4],
    SUM(CASE
        WHEN StaffRelationships = 5
            THEN 1
        ELSE 0
    END AS [5]
FROM FamilySatisfactionResponses
WHERE ISNULL(StaffRelationships, 0) <> 0

Лучшим вариантом может быть использование оператора PIVOT, но это быстрое решение вашей проблемы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...