#sql-server #coldfusion
#sql-server #coldfusion
Вопрос:
я пытаюсь определить условие SR.PRODUCT_STOCK2 > 0
внутри кода sql, поскольку оно AS
имеет условие суммы, вот код sql
SELECT P.PRODUCT_ID,P.PRODUCT_NAME,PS.MONEY,PR.PRICE,P.BRAND_ID,PS.PRICE,GSL.PRODUCT_STOCK,GSL.PURCHASE_ORDER_STOCK,GSL.SALEABLE_STOCK,P.PRODUCT_DETAIL2,P.BARCOD
<cfif isdefined('attributes.department_id') and len(attributes.department_id)>
,(SUM(SR.STOCK_IN)-SUM(SR.STOCK_OUT)) AS PRODUCT_STOCK2
</cfif>
FROM PRODUCT P
JOIN PRICE_STANDART PS ON P.PRODUCT_ID = PS.PRODUCT_ID
JOIN PRICE PR ON P.PRODUCT_ID = PR.PRODUCT_ID
JOIN #DSN2_ALIAS#.GET_STOCK_LAST GSL ON P.PRODUCT_ID = GSL.PRODUCT_ID
<cfif isdefined('attributes.department_id') and len(attributes.department_id)>
JOIN #DSN2_ALIAS#.STOCKS_ROW SR ON P.PRODUCT_ID=SR.PRODUCT_ID
</cfif>
WHERE PS.PURCHASESALES=1 AND PS.PRICESTANDART_STATUS=1 AND P.IS_SALES=1 AND P.IS_PURCHASE=1 AND P.IS_INTERNET=1 AND P.IS_EXTRANET=1
<cfif isdefined('attributes.department_id') and len(attributes.department_id)>
AND
(
<cfloop list="#attributes.department_id#" delimiters="," index="dept_i">
(SR.STORE = #listfirst(dept_i,'-')# AND SR.STORE_LOCATION = #listlast(dept_i,'-')#)
<cfif dept_i neq listlast(attributes.department_id,',') and listlen(attributes.department_id,',') gte 1> OR</cfif>
</cfloop>
)
<cfif isdefined('attributes.is_stock') and attributes.is_stock is 1>
AND SR.PRODUCT_STOCK2 > 0
</cfif>
</cfif>
GROUP BY P.PRODUCT_ID,PR.PRICE,P.PRODUCT_NAME,PS.MONEY,P.BRAND_ID,PS.PRICE,GSL.PRODUCT_STOCK,GSL.PURCHASE_ORDER_STOCK,GSL.SALEABLE_STOCK,P.PRODUCT_DETAIL2,P.BARCOD
в журнале ошибок написано: Недопустимое имя столбца PRODUCT_STOCK2
я знаю, что неправильно определил условие, я просто не знаю, как правильно его определить, нужна помощь! Спасибо всем за помощь!
Ответ №1:
Вам придется использовать предложение having следующим образом:
HAVING (SUM(SR.STOCK_IN)-SUM(SR.STOCK_OUT)) > 0
Комментарии:
1. Как выглядит ваш новый запрос?
2. все то же самое, за исключением
AND SR.PRODUCT_STOCK2 > 0
того, что вместоHAVING (SUM(SR.STOCK_IN)-SUM(SR.STOCK_OUT)) > 0
3. Наличие должно быть после предложения Group by . Таким образом, ваш запрос завершится так: GROUP BY P.PRODUCT_ID,PR.PRICE,P.PRODUCT_NAME,PS.MONEY,P.BRAND_ID,PS.PRICE,GSL.PRODUCT_STOCK,GSL.PURCHASE_ORDER_STOCK,GSL.SALEABLE_STOCK,P.PRODUCT_DETAIL2,P. ШТРИХ-КОД, ИМЕЮЩИЙ (SUM(SR.STOCK_IN)-СУММА(SR.STOCK_OUT)) > 0
4. СПАСИБО 🙂 я написал такой sql-код, но не знаю основ ))