0

こんにちは、「Not Set」を 2 回引き込んでいるように見えるクエリがあります。

ここに画像の説明を入力

いくつかのチェックの後、現在の段階の列にNULLがあり、文字列 'Not Set'がテーブルに保存されていることが原因であることがわかりました。したがって、以下では、「設定されていません」の 3 つの文字列と、「設定されていません」に強制された 195 個の NULLS が生成されます。しかし、私が実際に見たいのは、#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 
4

1 に答える 1

3

私は単に変わると信じています

GROUP BY CurrentStage 

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

動作します。

選択のフィールドの代わりに、テーブル フィールドの 1 つ (つまり) をGROUP BY使用します。SQL サーバーは、select のフィールドによるグループ化を許可しません。CurrentStagecirRep.CurrentStage

また、まさにこの理由から、出力フィールドに既存のフィールドと同じ名前を使用しないことをお勧めします。

于 2013-07-18T12:41:14.457 に答える