Sql server Transact-SQL和Where语句以及CASE语句
我有以下要求,将多次加入-目前这个搜索着眼于客户的居住县。这需要更改为查看Sql server Transact-SQL和Where语句以及CASE语句,sql-server,tsql,Sql Server,Tsql,我有以下要求,将多次加入-目前这个搜索着眼于客户的居住县。这需要更改为查看tbl\u客户\u保险。区域\u id,了解消费者的有效保险。如果客户有多个符合此标准的保险,请使用ins_id=2的县(Medicaid)。我相信我的大部分查询都是正确的,但我正在挂断ti.INSU id,我相信我需要一个案例,基本上只返回2,否则如果2不存在,返回客户的保险 SELECT ti.client_id, ti.exp_dt, ins_id, * FROM tbl_Client AS t
tbl\u客户\u保险。区域\u id
,了解消费者的有效保险。如果客户有多个符合此标准的保险,请使用ins_id=2的县(Medicaid)。我相信我的大部分查询都是正确的,但我正在挂断ti.INSU id,我相信我需要一个案例,基本上只返回2,否则如果2不存在,返回客户的保险
SELECT
ti.client_id, ti.exp_dt, ins_id, *
FROM
tbl_Client AS tc
INNER JOIN
tbl_client_insurance AS ti ON ti.client_ID = tc.client_ID
WHERE
tc.client_id = 26
AND tc.active = 1
AND (ti.exp_dt >= GETDATE() OR ti.exp_dt IS NULL)
CASE
--- Need some help here.
您可以在连接逻辑中添加这样的条件,如
INNER JOIN tbl_client_insurance AS ti ON ti.client_ID = tc.client_ID AND ti.ins_id=2
我不知道你想要的结果集是什么。 根据您的样本,您需要所有匹配的客户保险。 但看起来你可能只想为那个客户买一个 如果您只想为该客户购买一台,这只是一个订购问题。 你应该使用工会。 第一部分是保险id 2的查询。 第二部分是对所有其他保险的查询。 按您提供的新列排序。 对于第一部分,新列将是A。 第二部分是B。 然后只取第一排 这样,如果id 2存在,它将是第一个,否则它将是其他保险之一,或者如果没有匹配的保险,您将得到一个空的结果集
接下来的问题是,如果没有医疗补助,您如何判断选择哪些其他保险。同样,这只是订购。这是真的,但是,如果该保险不存在,我将需要退还其他保险(如果有)。