2つのテーブルがあり、CTEからの結果が得られ、CTEクエリの直後に次の結果が得られました。PTEOT結果セットCTE直後のクエリ
私は、[Lead_Created_Month]列で結果セットをピボットする方法についてはわかりません。結果セットをサブクエリにラップし、エイリアスを付ける必要がありますが、正確な方法はわかりません。これは、目的の結果セットを生成するのにはうまくいく私のコードですが、この結果セットは[Lead_Created_Month]カラムによってピボットされる必要があります。
USE DatabaseName
GO
Create Table #TempSales
(
LeadID_fk int identity (1,1),
[dateCreated] datetime
)
insert into #TempSales
values
(NULL),
(getdate()),
(getdate()),
(NULL),
(getdate()),
(getdate()),
(getdate()),
(NULL),
(getdate()),
('2016-05-24 14:17:41.330'),
('2016-03-24 14:17:41.330'),
('2016-03-22 14:17:41.330'),
('2016-03-21 14:17:41.330'),
('2016-04-24 14:17:41.330'),
(NULL);
Create Table #TempLead
(
LeadID int identity (1,1),
[dateCreated] datetime
)
insert into #TempLead
values
(getdate()),
(getdate()),
(getdate()),
(getdate()),
(getdate()),
(getdate()),
(getdate()),
(getdate()),
(getdate()),
('2016-05-24 14:17:41.330'),
('2016-03-24 14:17:41.330'),
('2016-03-22 14:17:41.330'),
('2016-03-21 14:17:41.330'),
('2016-04-24 14:17:41.330'),
(getdate());
Select * from #TempLead;
Select * from #TempSales
;with cte
as
(Select * from #TempLead)
select count(l.LeadID) as [count of Leads], count(s.LeadID_fk) as [count of Sales],
Cast(datepart(mm,[l].[dateCreated]) as varchar(2))+'/'+
--Cast(datepart(dd,[dateCreated]) as varchar(3))+'/'+
Cast(datepart(yyyy,[l].[dateCreated]) as varchar(5)) as [Lead_Created_Month]
from cte as l
left join #TempSales as s on s.LeadID_fk=l.LeadID
and s.[dateCreated] is not null
group by Cast(datepart(mm,[l].[dateCreated]) as varchar(2))+'/'+
Cast(datepart(yyyy,[l].[dateCreated]) as varchar(5))
最終的な結果セットは次のようになります。あなたは私のコードは、の計算が欠落している見ることができるように
コンバージョン率。
だから私はそれを計算するためにこのコードを書いた:
--,Cast((Select count([s].LeadID_fk) from #TempSales as s where [s].[dateCreated] is not null
--/* group by Cast(datepart(mm,[s].[dateCreated]) as varchar(2)) +'/'+ Cast(datepart(yyyy,[s].[dateCreated]) as varchar(5)) */
--)/count([l].LeadID) *100 as nvarchar(10)) + '%' as Conversion
しかし、これは正しいですSSMSに表示されるように、この警告メッセージが表示されます。それは私がもっと良い解決策を知らないことだけです。
メッセージレベル512、レベル16、状態1、行1サブクエリは1以上の値を返しました。 =、!=、<、< =、>>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。
ありがとうございます。どのように変換PIVOTの出力でキャストまたは変換を使用することができますか?上記のコードの最後の2行です:([201603]、[201604]、[201605]、[201606]))のs.yyyymmのピボット(max(s.conversion))pvt )t; – enigma6205
あなたが\t \t \t な\t \t場合 \t \t \tときt.srce = 3その後、キャスト(トン。[201603]はvarchar(MAX)など)+ '%' のようにcase文を追加することができ、他のキャスト(トン。[201603 ]としてvarchar(max)) \t \t \t end [201603]として、cte定義の直後のselect –