次のテーブルをピボットする必要があります。SQL Server 2008 R2:カウント付きピボットテーブル
表:
CREATE TABLE Emp_Month
(
EMPID int,
[Month] varchar(10)
);
挿入:
INSERT INTO Emp_Month VALUES(101,'July');
INSERT INTO Emp_Month VALUES(102,'June');
INSERT INTO Emp_Month VALUES(103,'May');
INSERT INTO Emp_Month VALUES(104,'April');
INSERT INTO Emp_Month VALUES(105,'March');
INSERT INTO Emp_Month VALUES(201,'July');
INSERT INTO Emp_Month VALUES(202,'July');
INSERT INTO Emp_Month VALUES(203,'June');
INSERT INTO Emp_Month VALUES(204,'July');
INSERT INTO Emp_Month VALUES(205,'June');
INSERT INTO Emp_Month VALUES(301,'January');
INSERT INTO Emp_Month VALUES(302,'January');
INSERT INTO Emp_Month VALUES(303,'February');
INSERT INTO Emp_Month VALUES(304,'February');
INSERT INTO Emp_Month VALUES(305,'February');
予想される出力:私はCOUNTを印刷したい(last_months_from_current_date)
Last_6_Month Last_5_Month Last_4_Month Last_3_Month Last_2_Month Last_1_Month
--------------------------------------------------------------------------------------------
13 10 9 8 7 4
を試しマイ:
select *
from
(
SELECT t.Month,t.[Month] as Mon
FROM Emp_Month t
) src
pivot
(
COUNT(Mon)
for [Month] in ([Last_6_Month],[Last_5_Month],[Last_4_Month],[Last_3_Month],[Last_2_Month],[Last_1_Month])
) piv;
しかし、すべてゼロの値を取得します。
select *
from
(
SELECT t.Month,t.[Month] as Mon
FROM Emp_Month t
) src
pivot
(
COUNT(Mon)
for [Month] in ([Last_6_Month],[Last_5_Month],[Last_4_Month],[Last_3_Month],[Last_2_Month],[Last_1_Month])
) piv;
をクエリに次の行が月列内の実際の値を持っている必要があります:
「Track_Table」と「Emp_Month」は同一であると仮定しますか?また、あなたのデータは実際に 'date'値ではなく月名を含む文字列ですか? –
@Damien_The_Unbeliever、テーブル名を編集しました。そして、はい、その月は文字列です。 – MAK
私は今あなたの期待している結果を見ていて、最後の6ヶ月に2〜7月のすべての行を含め、3〜7月のすべての行を最後の5ヶ月に含めることを望みます。そう? – Greenspark