我正在尝试使用在何处创建采购订单报告来过滤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 here
M.ITEM_NO,enter code here
M.DESCR,enter code here
N.QTY_ON_HND,enter code here
CASE enter code here
WHEN N.QTY_ON_HND <0 enter code here
THEN 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
sum(S.QTY_SOLD)作为QTY_SOLD,enter code here
count(S.BUS_DAT)AS SALS_DATS
enter code here
FROM enter code here
dbo.IM_INV N enter code here
INNER JOIN dbo.IM_ITEM M enter code here
ON enter code here
N.ITEM_NO = M.ITEM_NO
enter code here
INNER JOIN enter code here
dbo.PS_TKT_HIST_LIN S enter code here
ON enter code here
N.ITEM_NO = S.ITEM_NO
enter code here
WHERE S.BUS_DAT> getdate() - 270 AND N.QTY_ON_HND <4 AND M.PRC_1 <2
enter code here
Group通过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
Order by M.ITEM_NO`
您将需要组合两种类型的过滤。
“项目价格<$ 2” - >这需要一个WHERE子句
例如
WHERE [item price] < 2
“我们至少在一个月内出售了1次”
这是一个聚合类型过滤器,因此您需要使用HAVING
HAVING COUNT(*) > 1
加上分组条款
GROUP BY DATEPART(mm, bus_dt)
因为你有很多标准 - 我建议你把它分解并从顶部开始。一旦你有第一组过滤器正常工作,那就继续下去......
尝试将所有不同的标准制表成一个简单的EXCEL表可能是有益的。
例如
为每个OR添加一行,为每个AND条件添加一列。
祝你好运!