我尝试这样做,但它不会让我。
我的表(MSSQL):
+----------+--------+---------------------+----------+-------+------------+ | parentid | okeyno | okeyname | okeydata | recid | okeydouble | +----------+--------+---------------------+----------+-------+------------+ | 1357 | 1 | WINZERKE01_TESTFELD | 123 | 1486 | 0 | | 1360 | 1 | WINZERKE01_TESTFELD | 456 | 1488 | 0 | | 1362 | 1 | WINZERKE01_TESTFELD | 789 | 1492 | 0 | | 1361 | 1 | WINZERKE01_TESTFELD | 789 | 1490 | 0 | | 1358 | 1 | WINZERKE01_TESTFELD | 123 | 1484 | 0 | | 1377 | 1 | WINZERKE01_TESTFELD | 999 | 1485 | 0 | +----------+--------+---------------------+----------+-------+------------+
你能看到的是,有几个同一个okeyname。 我现在只想要那个没有公共okeydata的行的parentid。
在这种情况下,结果应为" 1360"和" 1377"。
现在这就是我试图做的事情:
SELECT
parentid
FROM
objkeys
WHERE
okeyname = 'WINZERKE01_TESTFELD'
GROUP BY
okeydata
HAVING
COUNT(okeydata) = 1
但它总是希望,我将parentid纳入GROUP BY。 但我不想要这个。 我怎么能解决这个问题?
感谢。
答案 0 :(得分:2)
由于知道结果只表示一行,因此如果只给定一个输入行,则应用任何返回其输入的聚合应该没有问题。例如。 MIN
,MAX
,SUM
:
SELECT
okeydata, MIN(parentid) as parentid
FROM
objkeys
WHERE
okeyname = 'WINZERKE01_TESTFELD'
GROUP BY
okeydata
HAVING
COUNT(okeydata) = 1