私はこの質問を正しく聞いているかどうかはわかりません。アルゴリズム的に私は何をしたいのか分かっていますが、SQLの適切な構文は分かりません。基準に基づいて合計の列合計sql
私は、顧客番号、IP、セッションの開始時間、およびセッションの合計時間によるオンラインセッションの合計時間を含むテーブルを作成しました。ここで(IPとCUSTNOも、テーブルはとてもおかしな言い訳を作る方法がわからマスクされていない)、このテーブルがどのように見えるかの例です:
CustNo minDate maxDate ClientIp timeDiff
123456 2017-11-14-02:39:27.093 2017-11-14-02:39:59.213 1.1.1.1 0.000372
私はその後、活動の特定の種類を探して、別のテーブルを作成し、この特定のアクティビティの前にこの特定のユーザがそのIPをどれくらいの期間使用したかを知りたい。 2番目のテーブルには、各アクティビティが個別の行、customerID、IP、およびタイムスタンプとして含まれています。
ここまでは問題ありません。テーブルは上手く見えます。
顧客IDとIPに基づいて最初のテーブルを調べる部分を記述してから、セッションの開始時間がアクティビティ時間よりも短ければその顧客のIPの使用量を合計する必要がありますどのようにこれを行うには分かりません。ここには現在の機能があります(明らかに機能していません)。これは新しいIPになる可能性があり、最初のテーブルにない可能性があるため、左結合を実行しています。
SELECT
*,
SUM(##finalSessionSums.timeDiff)
FROM
##allTransfersToDiffReceip
LEFT JOIN
##finalSessionSums ON ##allTransfersToDiffReceip.CustNo = ##finalSessionSums.CustNo
AND ##allTransfersToDiffReceip.ClientIp = ##finalSessionSums.ClientIp
AND ##allTransfersToDiffReceip.[DateTime] < ##finalSessionSums.minDate
私はここで集約関数のエラーを取得しますが、私はこのアプローチにどうやってアプローチするのか分かりません。
受信する正確なエラーとそのデータの予想される結果明らかに。 –
エラーは何ですか? 2番目のテーブルのサンプルデータを提供してください。 – sia
あなたの質問には既に回答していますか? – Nikolaus