Sql 检查错误:分组依据

Sql 检查错误:分组依据,sql,sql-server,group-by,grouping,Sql,Sql Server,Group By,Grouping,我得到了一个查询,我想检查特定数字是否有错误(否)。如果有1个或多个错误,结果应为“是”。如果没有错误,结果应为“否”。但我只想要一行,不是多行 请参阅下面的查询以及我希望的结果: SELECT CASE WHEN ISNUMERIC(SUB1.ItemNo) != 1 THEN 'ERROR: ItemNo not numeric' ELSE 'OK' END AS ErrorType, SUB1.No FROM ( --123 SELECT 123

我得到了一个查询,我想检查特定数字是否有错误(否)。如果有1个或多个错误,结果应为“是”。如果没有错误,结果应为“否”。但我只想要一行,不是多行

请参阅下面的查询以及我希望的结果:

SELECT CASE WHEN ISNUMERIC(SUB1.ItemNo) != 1 THEN 'ERROR: ItemNo not numeric'
           ELSE 'OK'
       END AS ErrorType, SUB1.No
FROM
(
--123
    SELECT 123 AS No, '123456789' AS ItemNo
    UNION ALL
    SELECT 123 AS No, '123456789x' AS ItemNo
    UNION ALL
    SELECT 123 AS No, '122456789' AS ItemNo
    UNION ALL
--456
    SELECT 456 AS No, '123456789' AS ItemNo
    UNION ALL
    SELECT 456 AS No, '178978788' AS ItemNo
    UNION ALL
    SELECT 456 AS No, '114147787' AS ItemNo
) AS SUB1
--结果:它最终应该是什么样子

SELECT 'Yes' AS Error, 123 AS No
UNION ALL
SELECT 'No' AS Error, 456 AS No

您可以只使用聚合:

SELECT (CASE WHEN MIN(ISNUMERIC(SUB1.ItemNo)) = 0 THEN 'ERROR: ItemNo not numeric'
             ELSE 'OK'
        END) AS ErrorType,
       SUB1.No
FROM (SELECT 123 AS No, '123456789' AS ItemNo
      UNION ALL
      SELECT 123 AS No, '123456789x' AS ItemNo
      UNION ALL
      SELECT 123 AS No, '122456789' AS ItemNo
      UNION ALL
      SELECT 456 AS No, '123456789' AS ItemNo
      UNION ALL
      SELECT 456 AS No, '178978788' AS ItemNo
      UNION ALL
      SELECT 456 AS No, '114147787' AS ItemNo
     ) SUB1
GROUP BY SUB1.NO;
在此上下文中,
MIN()
只检查是否有任何值不是数字