我需要有人帮我一些格式化。我试图使用子查询和UNION ALL等将其放入一行但没有成功。这似乎相当容易,但我只是用头撞墙。该表的布局如下:
Date pTypeCode Location Amt
1/1/2015 C Store1 50.21
1/1/2015 C Store1 125.62
1/1/2015 P Store 1 250.1
1/1/2015 EB Store 1 125.01
1/1/2015 C Store 2 50.25
1/1/2015 C Store 2 100.25
1/1/2015 EB Store 2 125.25
1/3/2015 EB Store 1 35.25
1/3/2015 C Store 1 35.25
1/3/2015 C Store 1 35.25
1/3/2015 P Store 1 35.25
1/3/2015 C Store 2 85.15
1/3/2015 C Store 2 65.25
1/3/2015 P Store 2 65.25
1/3/2015 EB Store 2 65.25
我需要它来获取pTypeCode的计数作为每行的列数。我可以在一个简单的查询中轻松获取我想要的数据:
SELECT Date, LOCATION,
pTypeCode,
Count(pTypeCode),
Sum(Amt) AS Prem
FROM [dbo].[CommisionEntry]
WHERE Date >=
(SELECT DATEADD(DAY, 1, EOMONTH(GetDate(), -1)))
AND Date <=
(SELECT EOMONTH(GetDate()))
GROUP BY date, LOCATION,
pTypeCode
但我需要计数(pTypeCode)= P和行中的C和EB也是如此:
Date Count(pTypeCode) C Count(pTypeCode) P Count(pTypeCode) EB SUM(Amt)
1/1/2015 2 1 1 550.94
任何帮助都将不胜感激。
由于
答案 0 :(得分:1)
如果你没有像pivot这样的东西(虽然你应该,因为看起来你正在使用T-SQL),你可以为每个值创建列,如下所示:
select
date
,sum(case pTypeCode when 'C' then 1 else null end) count_c
,sum(case pTypeCode when 'P' then 1 else null end) count_p
,sum(case pTypeCode when 'EB' then 1 else null end) count_eb
,sum(amt) sum_amt
from
CommisionEntry
where date >=
dateadd(day, 1, eomonth(GetDate(), -1))
and date <= eomonth(GetDate())
group by
date
答案 1 :(得分:0)
numberOfCellInRow