0
레이저 모양 이름과 날짜가 포함 된 테이블이 있습니다.T-SQL 피벗 쿼리
내 테이블이라고myBWB_LaserForms
laserform editwhen
LRAP1.lpw 2009-09-03 16:06:00.000
CON29R.lpw 2009-10-29 12:35:00.000
UN1.lpw 2010-03-02 11:38:00.000
UN244.lpw 2012-04-19 12:14:00.000
LT3.lpw 2013-01-02 11:00:00.000
LRAP1.lpw 2007-12-10 15:34:00.000
는 내가 생산하기 위해 시도하고 상단 예에서 왼쪽과 년 아래로 laserform의 이름을 가진 보고서입니다 2004 년, 2005 년, 2006 년 그리고 각 교차 셀은 해당 연도의 해당 서식 이름에 대한 레코드 수를가집니다.
일반적으로 나는이 꽤 끔찍한 SQL이 실현 그러나 나는
select l.laserform,
(select count(*) from mybwb_laserforms l1 where l1.laserform=l.laserform and year(editwhen)=2004) AS [2004],
(select count(*) from mybwb_laserforms l2 where l2.laserform=l.laserform and year(editwhen)=2005) AS [2005],
(select count(*) from mybwb_laserforms l3 where l3.laserform=l.laserform and year(editwhen)=2006) AS [2006],
(select count(*) from mybwb_laserforms l4 where l4.laserform=l.laserform and year(editwhen)=2007) AS [2007]
from mybwb_laserforms l
group by l.laserform
order by l.laserform
뭔가를 할 것이며, 나는 훨씬 더 지능 그것에 대해해야합니다.
필자는 피벗 기능을 사용하는 방법을 배우려하고 있지만 머리를 쓰려고 고심하고 있습니다.
또한 대부분의 예제에서 쿼리 열이 하드 코딩 된 것 같습니다. 피벗이 동적 일 수 있고 고유 한 연도 (editwhen) 값을 가져 와서 쿼리를 수정할 필요가없는 경우 좋을 것입니다. 내년과 그 다음 해.