【发布时间】:2017-09-07 10:42:39
【问题描述】:
我想在 SELECT 查询中使用 IF 语句。这是示例。 我有 3 个表格,其中保存客户信息、型号信息和库存。我想为每个客户提供最合适的模型。因此,在我的第一次尝试中,如果客户收入低于 5000,我想提供该商店中存在的廉价型号,否则该商店中的任何型号。 但我不能在 SELECT WHERE 部分使用 IF clouse。
SELECT TOP 1 @vmodel = stocks.model , @vsloc = stocks.sloc , @vyear = models.year , @vcost = models.cost <br>FROM bistore.dbo.stocks
JOIN bistore.dbo.models
ON stocks.model = models.model
WHERE stocks.sloc<>'Main'
AND stocks.stock > 0
AND models.mat IN (
IF (@vincome<5000) SELECT DISTINCT mat from models where mat<>'Carbon'
ELSE SELECT DISTINCT mat from models
) /* If income is less than 5000 than chose cheap models , else whatever ) */
** 更新 **
当客户登录我的门户网站时,我想为他/她提供最适合他的模型。我会检查他的收入,在他附近储存库存并在横幅上提供给他。这是我的表格样本。
声明@vcname VARCHAR(50)
声明 @vckids INT
声明 @vceng INT
声明 @vcweig INT
声明 @vcincome INT
声明 @vyear INT
声明 @vcost INT
SELECT TOP 1 @vcname = nmsnm , @vckids = kids , @vcleng = leng, @vcweig = weig , @vcincome = 来自客户的收入 ORDER BY id DESC
声明 @vmodel VARCHAR(50)
声明 @vsloc VARCHAR(50)
SELECT TOP 1 @vmodel = stock.model ,@vsloc = stock.sloc ,@vyear = models.year ,@vcost = models.cost FROM bistore.dbo.stocks
加入 bistore.dbo.models
ON stock.model = models.model
WHERE stock.sloc'主要'
AND stock.stock > 0
AND models.mat IN (
IF (@vincome'Carbon' END
ELSE BEGIN SELECT DISTINCT mat from models END
) /* 如果收入低于 5000 比选择便宜的型号,否则随便 ) /
AND models.frames IN (SELECT frames from models where frames 选择适合长度的模型/
AND models.type 'Kids Bike' / 如果有孩子,随便选(不大于长度)*/
按 NEWID() 排序
【问题讨论】:
-
你能给我们一些样本数据和预期结果吗
标签: sql-server