Я проверил это с CF 9 и MSSQL 2005ColdFusion MsSQL HAVING SUM() со значением NULL
CREATE TABLE HAVING_SUM
(
A_VARCHAR VARCHAR(5),
B_INT INT
)
INSERT INTO HAVING_SUM (A_VARCHAR, B_INT) VALUES ('AB', 2)
INSERT INTO HAVING_SUM (A_VARCHAR, B_INT) VALUES ('AB', 3)
INSERT INTO HAVING_SUM (A_VARCHAR, B_INT) VALUES ('AB', 5)
INSERT INTO HAVING_SUM (A_VARCHAR, B_INT) VALUES ('CD', 2)
INSERT INTO HAVING_SUM (A_VARCHAR, B_INT) VALUES ('CD', 7)
INSERT INTO HAVING_SUM (A_VARCHAR, B_INT) VALUES ('CD', 8)
INSERT INTO HAVING_SUM (A_VARCHAR, B_INT) VALUES ('CD', NULL)
и затем запрос в Ms среде SQL Server Management Studio Express
SELECT *
FROM HAVING_SUM
SELECT A_VARCHAR,
SUM(B_INT) AS B_INT
FROM HAVING_SUM
GROUP BY A_VARCHAR
SELECT A_VARCHAR,
SUM(B_INT) AS B_INT
FROM HAVING_SUM
GROUP BY A_VARCHAR
HAVING SUM(B_INT) = 10
SELECT A_VARCHAR,
SUM(B_INT) AS B_INT
FROM HAVING_SUM
GROUP BY A_VARCHAR
HAVING SUM(B_INT) = 10.5
результат
я попытался с помощью cfquery
<cfquery name="qryHavingSum_1">
SELECT *
FROM HAVING_SUM
</cfquery>
<cfdump var="#qryHavingSum_1#">
<cfquery name="qryHavingSum_2">
SELECT A_VARCHAR,
SUM(B_INT) AS B_INT
FROM HAVING_SUM
GROUP BY A_VARCHAR
</cfquery>
<cfdump var="#qryHavingSum_2#">
<cfquery name="qryHavingSum_3">
SELECT A_VARCHAR,
SUM(B_INT) AS B_INT
FROM HAVING_SUM
GROUP BY A_VARCHAR
HAVING SUM(B_INT) = 10
</cfquery>
<cfdump var="#qryHavingSum_3#">
<cfquery name="qryHavingSum_4">
SELECT A_VARCHAR,
SUM(B_INT) AS B_INT
FROM HAVING_SUM
GROUP BY A_VARCHAR
HAVING SUM(B_INT) = 10.5
</cfquery>
<cfdump var="#qryHavingSum_4#">
и результат
Редактировать (начало здесь): прокрутки вниз, чтобы отладчик я получил это
, что красный область указала, что qr yHavingSum_4 выполняется с 0 записи, но в Exception раздел qryHavingSum_4 не определен (<cfdump var="#qryHavingSum_4#">
) Edit (конец здесь)
, если я изменю qryHavingSum_4 к
<cfquery name="qryHavingSum_4">
SELECT A_VARCHAR,
SUM(ISNULL(B_INT, 0)) AS B_INT
FROM HAVING_SUM
GROUP BY A_VARCHAR
HAVING SUM(ISNULL(B_INT, 0)) = 10.5
</cfquery>
результат является
, а затем я третье состояние ed для изменения SUM(B_INT)
(без ISNULL) и HAVING SUM(B_INT)
(без ISNULL) с другим оператором > >= < <= <> !=
и он работает.
Почему я не могу использовать =
с запросом выше в CF? это CFbugs?
спасибо
почему qryHavingSum_4 выполняется, но мы не можем использовать его? – tsurahman
Если вам почему-то не нравится «isNull()» (возможно, вы более знакомы с mySQL, в котором «isNull()» имеет совершенно другую цель), вы всегда можете использовать «coalesce()». Для двух параметров он работает так же, как «isNull()». –