其他答案的簡化版:
SELECT
RIGHT(RTRIM(semester), 4) year,
COUNT(CASE WHEN left(semester,2)='SP' then id else null end) totalSpring,
COUNT(CASE WHEN left(semester,2)='FA' then id else null end) totalFall
FROM TextbookReservation
WHERE (semester IS NOT NULL)
AND (semester <> '')
AND (semester <> 'SM2008')
AND (semester <> 'SU2008')
GROUP BY RIGHT(RTRIM(semester), 4)
ORDER BY RIGHT(RTRIM(semester), 4) DESC
這裏,測試腳本:
CREATE TABLE #TextbookReservation
(
semester VARCHAR(6),
id INT
)
INSERT INTO #TextbookReservation VALUES ('SP2006', 1)
INSERT INTO #TextbookReservation VALUES ('SP2006', 2)
INSERT INTO #TextbookReservation VALUES ('SP2006', 3)
INSERT INTO #TextbookReservation VALUES ('SP2006', 4)
INSERT INTO #TextbookReservation VALUES ('SP2006', 5)
INSERT INTO #TextbookReservation VALUES ('FA2006', 1)
INSERT INTO #TextbookReservation VALUES ('FA2006', 2)
INSERT INTO #TextbookReservation VALUES ('FA2006', 3)
INSERT INTO #TextbookReservation VALUES ('SP2007', 1)
INSERT INTO #TextbookReservation VALUES ('SP2007', 2)
INSERT INTO #TextbookReservation VALUES ('FA2007', 1)
INSERT INTO #TextbookReservation VALUES ('FA2007', 2)
INSERT INTO #TextbookReservation VALUES ('FA2007', 3)
INSERT INTO #TextbookReservation VALUES ('FA2007', 4)
INSERT INTO #TextbookReservation VALUES ('FA2007', 5)
SELECT
RIGHT(RTRIM(semester), 4) year,
COUNT(CASE WHEN left(semester,2)='SP' then id else null end) totalSpring,
COUNT(CASE WHEN left(semester,2)='FA' then id else null end) totalFall
FROM #TextbookReservation
WHERE (semester IS NOT NULL)
AND (semester <> '')
AND (semester <> 'SM2008')
AND (semester <> 'SU2008')
GROUP BY RIGHT(RTRIM(semester), 4)
ORDER BY RIGHT(RTRIM(semester), 4) DESC
DROP TABLE #TextbookReservation
完美!謝謝。使用sql2008;我也必須按照Doug的建議來看看樞軸。 – gnome