使用UNPIVOT
測試數據和表:
DECLARE @t table
(empid varchar(10), D1 char(2), D2 char(2), D3 char(2), D4 char(2),D5 char(2),
D6 char(2),D7 char(2), D8 char(2), D9 char(2),D10 char(2), D11 char(2),
D12 char(2), D13 char(2), D14 char(2), D15 char(2))
INSERT @t values
('sam', 'PL','8','PL','4','8','SL','8','SL','4','CL','8','CL','8','8','8'),
('sunny','8','CL','4','CL','SL','8','4','SL','4','PL','8','8','8','8','8'),
('zimmy','4','4','4','8','8','8','4','4','8','8','8','8','8','8','8')
查詢:
SELECT empid, value, count(*) count
FROM @t as p
UNPIVOT
(value FOR col IN
([D1],[D2],[D3],[D4],[D5],[D6],[D7],[D8],[D9],
[D10],[D11],[D12],[D13],[D14],[D15])) AS unpvt
WHERE value in ('PL','CL','SL')
GROUP BY empid, value
結果:
empid value count
sam CL 2
sam PL 2
sam SL 2
sunny CL 2
sunny PL 1
sunny SL 2
我試圖顯示在一個問題表格式,但它不來,所以 – Datha 2015-03-25 12:14:47
什麼會您查詢的結果是什麼樣子? – Tanner 2015-03-25 12:17:00
請勿以這種方式存儲您的值。而是在通過外鍵鏈接到此表的新表中使用單列「值」。那麼編寫查詢就容易多了,而且效率也更高。如果你需要上面的格式,你可以使用'PIVOT'。 – 2015-03-25 12:17:02