从存在NULL和字符串的列中选择数据

时间:2013-07-18 12:35:51

标签: sql-server

您好我有一个查询似乎是两次“未设置”:

enter image description here

现在经过几次检查后,我知道这是因为当前阶段列中有NULLS和字符串'Not Set'存储在表中。所以下面会产生3个字符串'Not set'和195 NULLS强制为'Not Set'。 但我真正想看到的是#TempCircCount中的198 x'Not Sets'。怎么可以这样做?

我的失败代码在这里:

IF OBJECT_ID('tempdb..#TempCircCount') is not null
DROP TABLE #TempCircCount
SELECT 
    ISNULL(cirRep.CurrentStage, 'Not Set') AS CurrentStage,
    COUNT(ISNULL(cirRep.CurrentStage, 'Not Set')) AS Circuits
INTO #TempCircCount
FROM 
    [QuoteBase].[dbo].[CircuitReports] cirRep
RIGHT JOIN 
    Quotebase.dbo.Circuits cir ON cir.[PW Number] = CirRep.[PWNumber]
WHERE 
    Cir.Status='New Circuit Order'
GROUP BY CurrentStage 
ORDER BY CurrentStage

SELECT 
    ISNULL(CurrentStage, 'Not Set') AS [CurrentStage], 
    Circuits AS Circuits
FROM #TempCircCount
GROUP BY CurrentStage,  Circuits
ORDER BY CurrentStage 

1 个答案:

答案 0 :(得分:3)

我相信只是改变

GROUP BY CurrentStage 

GROUP BY ISNULL(cirRep.CurrentStage, 'Not Set')

会起作用。

GROUP BY使用您的某个表字段(即CurrentStage)中的cirRep.CurrentStage而不是select中的字段。 SQL服务器不允许按选择中的字段进行分组。

出于这个原因,我还建议使用与现有字段相同的输出字段名称。

相关问题