在 SQL 中拆分具有多个值的行

Splitting out rows with multiple values in SQL

我正在尝试从数据库中分离出一些值。

有两列,测试和 Test_Parameter。我想提取那些具有相同 "Test" 值的不同 "test_parameter" 值的行。例如,在我的屏幕截图中,我希望选择 "Grade:",因为它具有不同的 Test_Parameter 值。我知道它有一个非常简单的解决方案,但我无法弄清楚。

您可以使用聚合和 having:

select test
from t
group by test
having min(test_parameter) <> max(test_parameter);

我可能对这个问题感到困惑,但这行不通吗?

SELECT *
FROM t
WHERE test <> test_parameter

尝试以下任一方法删除冒号并进行比较:

    SELECT DISTINCT test FROM table1 WHERE test NOT LIKE test_parameter||'%'

    SELECT DISTINCT test FROM table1 WHERE SUBSTR(test,1,INSTR(test,':')-1) <> test_parameter

我更喜欢 Gordon 的回答,但你理解的可能很简单,尽管我怀疑较慢的方法是:

SELECT test 
FROM (
    SELECT test,
        COUNT(DISTINCT(test_parameter) AS c
    FROM table1
    GROUP BY 1
)
WHERE c > 1

以上是如果你真的不想要结果中的计数,否则 having 子句使其更简单:

SELECT test,
    COUNT(DISTINCT(test_parameter) AS c
FROM table1
GROUP BY 1
HAVING c > 1