我正在尝试使用创建采购订单报告的位置来过滤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 here
从
enter 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`订购
答案 0 :(得分:0)
您将需要结合两种过滤类型。
“商品价格<$ 2”->这需要WHERE子句
EG
WHERE [item price] < 2
“我们至少在一个月内卖出了1笔交易”
这是一个聚合类型过滤器,因此您需要使用HAVING
HAVING COUNT(*) > 1
加上分组条款
GROUP BY DATEPART(mm, bus_dt)
由于您有很多条件-建议您分解并从顶部开始。当第一组过滤器开始工作后,然后逐步降低工作量。
尝试将所有不同的标准列表到一个简单的EXCEL表中可能是有益的。
EG
为每个OR添加一行,为每个AND条件添加一列。
好机会!