我是一个新手,并试图在谷歌找到答案,但我认为我缺乏正确的术语来找到我需要的答案。
我有一个SQL Select语句,它从我们的报价包中的报价中返回一个物料清单。报价都包含具有单独BOM的单个项目。
目前,我可以使用单个语句返回报价中所有项目的BOM。我希望能够做的是让用户能够从选择中过滤某些项目。
例如,引用包含项目1 - 10(QI.QTE_POS是项目编号)。当前查询返回整个报价的BOM。新功能将使用一串项目编号仅返回字符串中项目的BOM(以逗号分隔)。
例如string items = 1,2,6,7,9;
SELECT
QI.QTE_POS AS 'ITEM_NUM',
QI.DESCR AS 'ITEM',
BF.EMARK,
F.FILL_CODE,
F.DESCR,
SUM(BF.FILL_COUNT) AS FILL_COUNT,
CAST(ROUND(BF.FILL_HEIGHT * 25.4, 2) AS REAL) AS FILL_HEIGHT,
CAST(ROUND(BF.FILL_WIDTH * 25.4, 2) AS REAL) AS FILL_WIDTH,
BF.RECTANGULAR,
S.SUPP_CODE
FROM
QUOTE_ITEM QI
INNER JOIN BOM_FILL BF ON QI.QUOTE_ITEM_ID = BF.QUOTE_ITEM_ID
INNER JOIN FILL F ON BF.FILL_LIB_ID = F.FILL_LIB_ID AND BF.FILL_ID = F.FILL_ID
INNER JOIN SUPPLIER S ON F.SUPP_LIB_ID = S.SUPP_LIB_ID AND F.SUPP_ID = S.SUPP_ID
INNER JOIN QUOTE Q ON Q.QUOTE_ID = QI.QUOTE_ID
WHERE
BF.COST_BY_BOM = 'T' AND
Q.QUOTE_NUM = @QuoteNum AND
Q.QUOTE_VERS = @QuoteVers AND
QI.QUOTE_VERS_START <= @QuoteVers AND
QI.QUOTE_VERS_STOP >= @QuoteVers AND
Q.QUOTE_NUM_PREF = @QuotePref AND
Q.QUOTE_NUM_SUFF = @QuoteSuff
GROUP BY
QI.DESCR,
QI.QTE_POS,
BF.EMARK,
F.FILL_CODE,
F.DESCR,
BF.FILL_HEIGHT,
BF.FILL_WIDTH,
BF.RECTANGULAR,
S.SUPP_CODE
ORDER BY
F.DESCR,
QI.DESCR,
QI.QTE_POS,
F.FILL_CODE,
FILL_HEIGHT,
FILL_WIDTH
QI.QTE_POS是我想要过滤的项目编号。
要手动执行此操作,伪代码将为:
Where QI.QTE_POS = 1 OR 2 OR 6 or 7 OR 9
我不知道如何使用参数执行此操作但是??
提前感谢您提供的任何帮助!
威尔
答案 0 :(得分:0)
我想我找到了我正在寻找的答案。如果这是最佳做法,你能告诉我吗?
如果我将以下代码添加到where语句中,它似乎只返回其QTE_POS匹配1 3或4的项目编号的玻璃
QI.QTE_POS IN (1,3,4)
任何反馈都会很棒!
干杯,
威尔