SQL-запрос, возвращающий список данных, которые необходимо сгруппировать - PullRequest
0 голосов
/ 27 сентября 2010

Я пытаюсь извлечь некоторые данные из нашей тестовой базы данных с помощью SQL-запроса, и я застрял. Ниже представлено представление о том, как выглядят данные, когда я их запускаю, и как они должны выглядеть после запуска.

Что я получу

Sample_Number  Centre_Code  DateEntered  AssayName
---------------------------------------------------
1              234          9/16/2010    TEST 1
1              234          9/16/2010    TEST 2
1              234          9/16/2010    TEST 3
1              234          9/16/2010    TEST 4
1              234          9/16/2010    TEST 5         
2              345          9/17/2010    TEST 1
2              345          9/17/2010    TEST 2
2              345          9/17/2010    TEST 3         
3              456          9/16/2010    TEST 1
3              456          9/16/2010    TEST 2
3              456          9/16/2010    TEST 3
3              456          9/16/2010    TEST 4
3              456          9/16/2010    TEST 5
3              456          9/16/2010    TEST 6
3              456          9/16/2010    TEST 7

Что я пытаюсь получить

Sample_Number  Centre_Code  DateEntered  ProfileName
-----------------------------------------------------                       
1              234          9/16/2010    PROFILE 1          
2              345          9/17/2010    PROFILE 2          
3              456          9/16/2010    PROFILE 3

Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть эти профили тестирования, где определенный набор тестов составляет профиль для каждого образца, и я не могу заставить их сгруппироваться в профили, я могу получить только отдельные тесты. Я думал об использовании CASE в запросе и указании тестов каждого профиля, но это не кажется эффективным, и это также выходит за рамки моих знаний SQL. Вот запрос, который у меня есть.

SELECT     User.Sample.Sample_Number,User.Centre.Centre_Code, User.Sample.DateEntered, User.Assay.AssayName
FROM         User.Sample INNER JOIN
                      User.Centre ON User.Sample.Centre_ID = User.Centre.Centre_Id INNER JOIN
                      User.Profile ON User.Sample.Profile_ID = User.Profile.Profile_ID INNER JOIN
                      User.Batch ON User.Sample.Batch_ID = User.Batch.Batch_ID INNER JOIN
                      User.SampleResult ON User.Sample.Sample_ID = User.SampleResult.Sample_ID INNER JOIN
                      User.Assay INNER JOIN
                      User.Result ON User.Assay.Assay_ID = User.Result.Assay_ID ON 
                      User.SampleResult.Assay_ID = User.Assay.Assay_ID AND User.SampleResult.Result_ID = User.Result.Result_ID INNER JOIN
                      User.Test ON User.Profile.Profile_ID = User.Test.Profile_ID AND User.Assay.Assay_ID = User.Test.Assay_ID
WHERE     (User.Sample.DateEntered > CONVERT(DATETIME, '2010-09-01 23:59:59', 102)) AND (User.Sample.DateEntered < CONVERT(DATETIME, 
                      '2010-09-20 00:00:00', 102))
GROUP BY User.Sample.DateEntered, User.SampleResult.Sample_ID, User.Assay.AssayName, User.Centre.Centre_Code, 
                      User.Sample.Sample_ID, User.Sample.Sample_Number

Для справки

Профиль 1 = Тест 1, Тест 2, Тест 3, Тест 4, Тест 5

Профиль 2 = Тест 1, Тест 2, Тест 3

Профиль 3 = Тест 1, Тест 2, Тест 3, Тест 4, Тест 5, Тест 6, Тест 7

Каждый тест в профиле будет иметь один и тот же номер образца, центральный код и введенную дату.

Могу ли я что-нибудь сделать с SQL-запросом или даже в Excel, чтобы манипулировать им после выполнения запроса?

Ответы [ 2 ]

2 голосов
/ 27 сентября 2010

Как насчет настройки отношений между профилями и тестами в другой таблице БД и объединения в эту таблицу?Таким образом, вы можете выбрать / group в имени профиля, которое вы хотите, а не имя теста

0 голосов
/ 28 сентября 2010

В вашем предложении GROUP BY слишком много полей. Удалите User.Assay.AssayName из вашего предложения GROUP BY. Это должно сделать вас на один шаг ближе к тому, что вы ищете. Возможно, вы захотите удалить и другие поля из предложения GROUP BY. Надеюсь, это поможет.

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