使用条件WHERE子句连接SQL语句而不使用过程?
我正在使用SQLServer2005。我有一个表单,其中用户正在选择“附加”项。他们可以在一个特定的计划中,为这些附加组件支付不同于零售成本的价格 我有两张桌子: 插件使用条件WHERE子句连接SQL语句而不使用过程?,sql,sql-server-2005,join,left-join,Sql,Sql Server 2005,Join,Left Join,我正在使用SQLServer2005。我有一个表单,其中用户正在选择“附加”项。他们可以在一个特定的计划中,为这些附加组件支付不同于零售成本的价格 我有两张桌子: 插件 ID--------AddonName--------RetailCost 6---------Red Tint---------85 7---------Green Tint-------75 附加项覆盖(此表覆盖该项目的零售成本,并为该计划ID提供特殊成本) 用户选择红色色调(ID=6)和绿色色调(ID=7),并且位于Pl
ID--------AddonName--------RetailCost
6---------Red Tint---------85
7---------Green Tint-------75
附加项覆盖(此表覆盖该项目的零售成本,并为该计划ID提供特殊成本)
用户选择红色色调(ID=6)和绿色色调(ID=7),并且位于PlanID=10中。我想显示这些附加项目,他们选择与相应的成本
想要这个结果:
ID--------AddonName--------RetailCost--------Cost--------PlanID
6---------Red Tint---------85----------------50----------10
7---------Green Tint-------75----------------75----------NULL
ID--------AddonName--------RetailCost--------Cost--------PlanID
6---------Red Tint---------85----------------50----------10
6---------Red Tint---------85----------------25----------11
7---------Green Tint-------75----------------75----------NULL
不是这个结果:
ID--------AddonName--------RetailCost--------Cost--------PlanID
6---------Red Tint---------85----------------50----------10
7---------Green Tint-------75----------------75----------NULL
ID--------AddonName--------RetailCost--------Cost--------PlanID
6---------Red Tint---------85----------------50----------10
6---------Red Tint---------85----------------25----------11
7---------Green Tint-------75----------------75----------NULL
当前SQL
SELECT
DISTINCT t1.ID,
t1.RetailCost,
Cost=case when t2.VisionPlanID=10 then t2.Cost else t1.RetailCost end,
t2.PlanID
FROM
Addons t1
LEFT OUTER JOIN
Addons_Override t2
ON
t1.ID=t2.AddonID
WHERE (VisionPlanID=10 AND ID=6) or ID=7
问题是我不能像这样编写select语句,因为我不知道哪些语句在Addons\u Override表中。什么select语句可以为我提供上面想要的结果
请帮忙
SELECT t1.ID, t1.RetailCost,
CASE
WHEN t2.PlanID IS NOT NULL THEN t2.Cost
ELSE t1.RetailCost
END as Cost,
t2.PlanID
FROM Addons t1
LEFT JOIN Addons_Override t2 ON (t1.ID = t2.AddonID AND t2.PlanID = 10)
只需将引用表2的任何元素从WHERE子句移动到JOIN子句
帮助一个姐妹。
——有人慈善吗?:)令人惊叹的!你是救命恩人!非常感谢。
SELECT t1.ID, t1.RetailCost,
COALESCE(t2.Cost, t1.RetailCost) As Cost,
t2.PlanID
FROM Addons t1
LEFT JOIN Addons_Override t2 ON t1.ID = t2.AddonID AND t2.PlanID=10
WHERE t1.ID IN (6,7)