私はちょうどデータをダンプすることから巨大なジャンプであるSQLレポートに飛び込み始めていますので、私に同行してください。SQL照会、希望出力の支援が必要
ここに、テーブルスキーマの簡単な説明があります。 テーブル名:CallLog フィールド:callid、トラッカー、recvddate、callsource
私が私に与え、この単純なグループ化のクエリ
Select
right('00' + rtrim(Datepart(ww, recvddate)),2) week,
Tracker,
count(callsource) as [Email Tickets]
from
calllog
where datepart(year,recvddate) >= '2017' and callsource = 'email'
group by right('00' + rtrim(Datepart(ww, recvddate)),2),Tracker
order by 2,1
使用して成功を収めてきました:
私はレポートを生成しようとしています私は、各呼び出し元の型のレコードの量を結果のクエリの独自の列としてカウントします。
Select
right('00' + rtrim(Datepart(ww, c1.recvddate)),2) week,
c1.Tracker,
count(c1.callsource) as [Email Tickets],
c2.[Queue Tickets]
from
calllog c1
inner join
(
Select
right('00' + rtrim(Datepart(ww, recvddate)),2) week,
Tracker,
count(callsource) as [Queue Tickets]
from
calllog
where datepart(year,recvddate) >= '2017' and callsource = 'phone'
group by right('00' + rtrim(Datepart(ww, recvddate)),2),Tracker
) c2
on c1.callid = c2.callid
where datepart(year,recvddate) >= '2017' and callsource = 'email'
group by right('00' + rtrim(Datepart(ww, recvddate)),2),Tracker
order by 2,1
をしかし、私は以下のエラーが表示されます。
これは私が試したものです。私は列を参照する方法を変更しようとしましたが、何も試したことはありません。
何かアドバイスが理解されます。
UPDATE:私は、私が探していたもので、このクエリを思い付くことができた@Simonの
Withtheヘルプ。
SELECT A.[week] as [Week],
A.tracker as Tracker,
B.Tickets as [Queue Tickets],
C.Tickets as [Email Tickets],
A.Tickets as [Total Tickets]
FROM (SELECT RIGHT('00' + RTRIM(DATEPART(ww, recvddate)),2) [week],
Tracker,
COUNT(callid) as Tickets
FROM calllog
WHERE DATEPART(year,recvddate) >= '2017' and tracker = 'djtaylor'
GROUP BY RIGHT('00' + RTRIM(DATEPART(ww, recvddate)),2), Tracker) as A
INNER JOIN (SELECT RIGHT('00' + RTRIM(DATEPART(ww, recvddate)),2) [week],
Tracker,
COUNT(callid) as Tickets
FROM calllog
WHERE DATEPART(year,recvddate) >= '2017' and callsource = 'queue'
GROUP BY RIGHT('00' + RTRIM(DATEPART(ww, recvddate)),2), Tracker) as B ON A.[week] = B.[week]
AND A.Tracker = B.Tracker
INNER JOIN (SELECT RIGHT('00' + RTRIM(DATEPART(ww, recvddate)),2) [week],
Tracker,
COUNT(callid) as Tickets
FROM calllog
WHERE DATEPART(year,recvddate) >= '2017' and callsource = 'email'
GROUP BY RIGHT('00' + RTRIM(DATEPART(ww, recvddate)),2), Tracker) as C ON A.[week] = C.[week]
AND A.Tracker = C.Tracker
ORDER BY 2,1
私が間違って理解していない限り、あなただけのことで選択し、グループにcallsourceを追加する必要があります。あなたの人/週/呼び出し元の人数を取得します – Simon
グループの列トラッカーのテーブルエイリアスを指定する必要があります。それはc1.trackerまたはc2.trackerのいずれかでなければなりません – GuidoG
コールソースを追加するべきではありません選択してグループ化するには?それはあなたが望んでいるようです。 – scsimon