Я пытаюсь извлечь некоторые данные из нашей тестовой базы данных с помощью 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, чтобы манипулировать им после выполнения запроса?