SQL多条件条件

时间:2018-10-24 16:59:52

标签: sql sql-server if-statement report where

我正在尝试使用创建采购订单报告的位置来过滤SQL 2008中的数据。我想说如果项目价格<$ 2且我们至少在一个月内售出1笔交易,然后向我显示其数量少于12的所有项目,并且如果项目价格<$ 10且我们至少在三个月内售出1笔交易,则显示我所有项目的数量少于4并且如果项目价格<$ 50,并且我们至少在六个月内售出1笔交易,然后向我显示项目所有数量少于2并且如果项目价格<$ 100并且我们售出1至少在9个月内进行销售,然后向我显示其数量少于1的所有商品 有什么办法可以做到。请提供语法建议。归档的价格为PREC_1,归档的数量为QTY_ON_HND,销售日期为SALD_DAT,销售数量为QTY_SOLD 感谢您的帮助

这是我进行的查询

`SELECT

'-从IM_IN选择 enter code here M.ITEM_NO, enter code here M.DESCR, enter code here N.QTY_ON_HND, enter code here情况     enter code here N.QTY_ON_HND <0时     enter code here至0     enter code here ELSE N.QTY_ON_HND     enter code here END AS QTY_HND,

enter code here N.LST_COST, enter code here N.LST_RECV_DAT,

enter code here-从IM_ITEM中选择 enter code here M.CATEG_COD, enter code here M.ATTR_COD_1, enter code here M.ITEM_VEND_NO, enter code here M.ALT_1_UNIT, enter code here M.ALT_1_NUMER, enter code here M.PRC_1, enter code here M.LST_COST,

enter code here-从PS_TKT_HIST_LIN中选择

enter code here和(S.QTY_SOLD)为QTY_SOLD, enter code here计数(S.BUS_DAT)为SALS_DATS

enter code hereenter code here dbo.IM_INV N enter code here INNER JOIN dbo.IM_ITEM M enter code here开启 enter code here N.ITEM_NO = M.ITEM_NO

enter code here内部联接 enter code here dbo.PS_TKT_HIST_LIN S enter code here开启 enter code here N.ITEM_NO = S.ITEM_NO

enter code here,其中S.BUS_DAT> getdate()-270和N.QTY_ON_HND <4和M.PRC_1 <2

enter code here分组依据 enter code here M.ITEM_NO, enter code here M.DESCR, enter code here M.ITEM_VEND_NO, enter code here M.CATEG_COD, enter code here M.ATTR_COD_1, enter code here N.QTY_ON_HND, enter code here N.LST_COST, enter code here N.LST_RECV_DAT, enter code here N.LST_SAL_DAT, enter code here M.ALT_1_UNIT, enter code here M.ALT_1_NUMER, enter code here M.PRC_1, enter code here M.LST_COST,

enter code here由M.ITEM_NO`订购

1 个答案:

答案 0 :(得分:0)

您将需要结合两种过滤类型。

“商品价格<$ 2”->这需要WHERE子句

EG

WHERE [item price] < 2

“我们至少在一个月内卖出了1笔交易”

这是一个聚合类型过滤器,因此您需要使用HAVING

HAVING COUNT(*) > 1

加上分组条款

GROUP BY DATEPART(mm, bus_dt)

由于您有很多条件-建议您分解并从顶部开始。当第一组过滤器开始工作后,然后逐步降低工作量。

尝试将所有不同的标准列表到一个简单的EXCEL表中可能是有益的。

EG

为每个OR添加一行,为每个AND条件添加一列。

好机会!