0
私はSQL Serverデータベースを持っており、特定のデータを取得しようとしています。私は各行のすべての非NULL列のカウント、別の列からの減算、および他のテーブル列(結合)からのデータが必要です。ジョインと計算を組み合わせた非ヌルの数を計算する方法が難しい
これは私がいる場所です。誰かがコードを見て、私が間違っていることを教えてください(ハードコードされた日付は無視してください、彼らはテスト専用です)。それは、集計関数またはGROUP BY句に含まれていないため
が>列「tblTimeClock.Time0」は、選択リストでは無効です:上記で
SELECT
((CASE WHEN TC.Time0 IS NOT NULL THEN 1 ELSE 0 END)
+ (CASE WHEN TC.Time1 IS NOT NULL THEN 1 ELSE 0 END)
+ (CASE WHEN TC.Time2 IS NOT NULL THEN 1 ELSE 0 END)
+ (CASE WHEN TC.Time3 IS NOT NULL THEN 1 ELSE 0 END)
+ (CASE WHEN TC.Time4 IS NOT NULL THEN 1 ELSE 0 END)
+ (CASE WHEN TC.Time5 IS NOT NULL THEN 1 ELSE 0 END)
+ (CASE WHEN TC.Time6 IS NOT NULL THEN 1 ELSE 0 END)
+ (CASE WHEN TC.Time7 IS NOT NULL THEN 1 ELSE 0 END)
+ (CASE WHEN TC.Time8 IS NOT NULL THEN 1 ELSE 0 END)
+ (CASE WHEN TC.Time9 IS NOT NULL THEN 1 ELSE 0 END)) AS [Time Punches]
,SUM(CASE WHEN TC.Odometer0 IS NOT NULL THEN 1 ELSE 0 END) AS MileageStart
,SUM(CASE WHEN TC.Odometer1 IS NOT NULL THEN 1 ELSE 0 END) AS MileageEnd
,SUM(CASE WHEN MileageEnd >= 0 THEN 1 ELSE 0 END) -
SUM(CASE WHEN MileageStart < 0 THEN 1 ELSE 0 END) AS [Total Miles]
,D.DriverID AS [Driver ID]
,W.FirstName +' '+W.LastName AS [Driver Name]
,TC.PunchDate AS [DATE]
FROM tblTimeClock TC WITH (NOLOCK)
INNER JOIN tblDrivers D WITH (NOLOCK)
ON D.DriverID = TC.PunchID
INNER JOIN tblWorker W WITH (NOLOCK)
ON W.WorkerID = D.DriverID
WHERE TC.PunchID IS NOT NULL
AND TC.PunchDate BETWEEN '2017-05-01' AND '2017-06-01'
ORDER BY TC.PunchDate
私はこのエラーを取得しています。
しかし、これをGROUP BY句に含める方法はわかりません。試行するたびに、他のエラーがポップアップ表示されます(句を配置する場所によって異なります)。
誰かが「私が間違っていることを教えてくれますか」と尋ねた理由は、壊れたものを修正すると、その後の問題ごとに何度も "ヘルプ"を返す必要がないからです。私はコードが悪いことを知っている、これがなぜ私は助けが必要です。
あなたが問題を説明したり質問をしていませんでした。 (*間違っていることを教えてもらえますか?*は答えることのできない質問です)あなたが投稿したSQLの問題点を説明してください。 –
ヌル以外の列のカウントを取得する場合は、https://stackoverflow.com/questions/18193365/count-of-non-null-columns-in-each-row –
を参照して問題を説明し、質問が尋ねられた。 –