Getestet habe ich diese mit CF 9 und MsSQL 2005Coldfusion MsSQL SUM having() mit NULL-Wert
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)
dann Abfrage in 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
das Ergebnis ist
dann habe ich versucht cfquery mit
<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#">
und das Ergebnis ist
bearbeiten (hier starten): nach unten scrollen, um Debugger muss ich diese
dass rot Bereich angezeigt, dass qr yHavingSum_4 ausgeführt wird, mit 0 Rekord, aber in der Ausnahme Abschnitt qryHavingSum_4 ist nicht definiert (das <cfdump var="#qryHavingSum_4#">
) bearbeiten (Ende hier)
wenn ich qryHavingSum_4 zu
<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>
das Ergebnis zu ändern ist
und dann I Tri ed zu ändern SUM(B_INT)
(ohne ISNULL) und HAVING SUM(B_INT)
(ohne ISNULL) mit anderen Operator > >= < <= <> !=
und es funktioniert.
Warum kann ich nicht die =
mit Abfrage oben in CF verwenden? ist es CFbugs?
danke
ändern, warum die qryHavingSum_4 ausgeführt wird, aber wir können es nicht verwenden? – tsurahman
Wenn Sie 'isNull()' aus irgendeinem Grund nicht mögen (vielleicht sind Sie mit mySQL vertrauter, wobei 'isNull()' einen ganz anderen Zweck hat), können Sie stattdessen 'coalesce()' verwenden. Für zwei Parameter funktioniert es genauso wie 'isNull()'. –