我试图在链接到位置编号(1到6)的单个列中返回多个值,但只是在每种情况下都具有特定位置的那些值。基本上我有6个我想创建的列,每个位置1个,并返回与该位置编号关联的所有结果值。我创建了6个巢式病例报告,试图获得这些结果:从SELECT中返回嵌套在CASE中的多个值
(CASE WHEN tbl_TestWells.well_result <> NULL
THEN
(SELECT tbl_TestWells.well_result
FROM tbl_TestWells
WHERE tbl_TestWells.Well_Index = 1)
ELSE NULL END) AS Well_1_Graded_Result,
的问题是,他们只在它的设置方式返回NULL值。如果我把这个情况拿出来,那么我得到错误消息“subquery返回的值超过1,当子查询跟随=,!=,<,< =,>,> =或者子查询用作表达。”
编辑:完整的代码部分的图,所以我已经将其简化成什么相关
SELECT DISTINCT
--Other Columns being selected
(CASE WHEN tbl_TestWells.well_result <> NULL
THEN
(SELECT tbl_TestWells.well_result
FROM tbl_TestWells
WHERE tbl_TestWells.Well_Index = 1)
ELSE NULL END) AS Well_1_Graded_Result,
--The other five well results are set up in the exact same format as above, just replacing 1 with the corresponding number
FROM tbl_TestCartridges
JOIN tbl_Tests ON
tbl_Tests.test_uid = tbl_TestCartridges.test_uid
JOIN tbl_Programs ON
tbl_Programs.program_uid = tbl_Tests.program_uid
JOIN tbl_Cartridges ON
tbl_Cartridges.system_uid = tbl_Programs.system_uid
JOIN tbl_TestWells ON
tbl_TestWells.test_cartridge_uid = tbl_TestCartridges.test_cartridge_uid
JOIN tbl_TestSamples ON
tbl_TestSamples.test_well_uid = tbl_TestWells.test_well_uid
ORDER BY tbl_TestCartridges.barcode
;
可能有助于特别注意什么,你正在使用SQL(T-SQL,MySQL和PL/SQL)的变种,因为ISNULL/IFNULL它们的功能各不相同。 –