我有一种情况,我试图为第二天有约会的人提取会员电话号码。问题是数据存储在数据库中的方式。 MEMBERS表有四个字段:phone1,phone2,phone3,phone4,另外还有phone1label,phone2label,phone3label和phone4label四个字段。在用户界面中,用户可以通过下拉菜单4具有移动功能来具体说明吃什么电话号码。因此,有没有办法只为每个MEMBER记录拉回字段,其中电话号码=' 4'?例如,John Doe可能在phone1中使用phone1label =' 4'和John Q Public可能会在现场phone2中使用phone2label =' 4'。
然后我需要将此逻辑添加到以下查询中:
SELECT SCSERVICES.servicecode,
SCSERVICES.servicename,
SCSESSIONS.scheduleid,
SCSERVICES.servicetype,
SCSERVICECATEGORIES.servicecategory,
SCSCHEDULES.scheduledatefrom,
MEMBERS.lname,
MEMBERS.fname,
MEMBERS.phone1,
MEMBERS.phone2,
MEMBERS.phone3,
MEMBERS.phone4,
MEMBERS.phone1label,
MEMBERS.phone2label,
MEMBERS.phone3label,
MEMBERS.phone4label,
SCSCHEDULES.timestart,
SCSCHEDULES.schedulestatus
FROM SCSESSIONS
INNER JOIN SCSERVICES ON SCSESSIONS.serviceid = SCSERVICES.serviceid
INNER JOIN SCSERVICECATEGORIES ON SCSERVICES.servicecategoryid = SCSERVICECATEGORIES.servicecategoryid
INNER JOIN SCSCHEDULES ON SCSESSIONS.scheduleid = SCSCHEDULES.scheduleid
INNER JOIN MEMBERS ON SCSCHEDULES.memid = MEMBERS.memid
WHERE (SCSERVICECATEGORIES.servicecategory = 'Spa')
AND (SCSERVICES.siteid = '779')
AND (CAST(SCSCHEDULES.scheduledatefrom AS DATE) = '04-27-2016')
AND (SCSCHEDULES.schedulestatus = '1')
答案 0 :(得分:3)
您可以使用CASE
声明:
CASE WHEN phone1label = '4' THEN phone1
WHEN phone2label = '4' THEN phone2
WHEN phone3label = '4' THEN phone3
WHEN phone4label = '4' THEN phone4
END AS MobilePhone
请注意,如果将电话号码规范化为单独的表而不是每个记录有多个字段,那么它会更清晰。