SQL多条件的位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL多条件的位置相关的知识,希望对你有一定的参考价值。

我正在尝试使用在何处创建采购订单报告来过滤SQL 2008中的数据。我想说,如果物品价格<$ 2并且我们至少在一个月内售出1次销售然后向我显示他们的数量已经少于12并且如果物品价格<$ 10并且我们至少在三个月内卖出1次销售然后显示我所有物品的数量都少于4件如果物品价格<50美元,我们至少在六个月内售出1件商品,那么告诉我他们的物品数量少于2件物品价格<100美元我们卖1件至少在九个月内出售然后告诉我他们的数量上的所有物品都少于1我是否可以做到这一点。请告知语法。价格是PREC_1,数量是QTY_ON_HND,销售日期是SALD_DAT,销售数量是QTY_SOLD我将非常感谢您的帮助

这是我的查询

`SELECT

' - 选择IM_IN'enter code hereM.ITEM_NO,enter code hereM.DESCR,enter code hereN.QTY_ON_HND,enter code hereCASE enter code hereWHEN N.QTY_ON_HND <0 enter code hereTHEN 0 enter code hereELSE N.QTY_ON_HND enter code hereEND AS QTY_HND,

enter code hereN.LST_COST,enter code hereN.LST_RECV_DAT,

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

enter code here - 从PS_TKT_HIST_LIN中选择

enter code heresum(S.QTY_SOLD)作为QTY_SOLD,enter code herecount(S.BUS_DAT)AS SALS_DATS

enter code hereFROM enter code heredbo.IM_INV N enter code hereINNER JOIN dbo.IM_ITEM M enter code hereON enter code hereN.ITEM_NO = M.ITEM_NO

enter code hereINNER JOIN enter code heredbo.PS_TKT_HIST_LIN S enter code hereON enter code hereN.ITEM_NO = S.ITEM_NO

enter code hereWHERE S.BUS_DAT> getdate() - 270 AND N.QTY_ON_HND <4 AND M.PRC_1 <2

enter code hereGroup通过enter code hereM.ITEM_NO,enter code hereM.DESCR,enter code hereM.ITEM_VEND_NO,enter code hereM.CATEG_COD,enter code hereM.ATTR_COD_1,enter code hereN.QTY_ON_HND,enter code hereN.LST_COST,enter code hereN.LST_RECV_DAT,enter code hereN.LST_SAL_DAT,enter code hereM.ALT_1_UNIT,enter code hereM.ALT_1_NUMER,enter code hereM.PRC_1, enter code hereM.LST_COST,

enter code hereOrder by M.ITEM_NO`

答案

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

“项目价格<$ 2” - >这需要一个WHERE子句

例如

WHERE [item price] < 2

“我们至少在一个月内出售了1次”

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

HAVING COUNT(*) > 1

加上分组条款

GROUP BY DATEPART(mm, bus_dt)

因为你有很多标准 - 我建议你把它分解并从顶部开始。一旦你有第一组过滤器正常工作,那就继续下去......

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

例如

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

祝你好运!

以上是关于SQL多条件的位置的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis -- 动态Sql概述动态Sql之<if>(包含<where>)动态Sql之<foreach>sql片段抽取

Laravel 5.8 有条件地插入 sql 片段

自动刷新android片段,直到满足条件

在 Rails 上为连接、限制、选择等(不是条件)的 SQL 片段安全地转义字符串

轻松保存重复多用的代码片段

sql语句中where条件的嵌套子查询性能