【发布时间】:2014-05-25 15:08:06
【问题描述】:
早上好。我做了桌子
CREATE TABLE zwierze2 (
id_zwierze INT PRIMARY KEY,
imie VARCHAR(15) NOT NULL CHECK(LEN(imie)>3),
rasa VARCHAR(30) NOT NULL,
wiek CHAR(2) NOT NULL,
rodzaj VARCHAR(30) NOT NULL,
);
与前。输入:
INSERT INTO zwierze2(id_zwierze, imie, rasa, wiek, rodzaj)
VALUES(1, 'Alik', 'amstaf', 4, 'pies');
INSERT INTO zwierze2(id_zwierze, imie, rasa, wiek, rodzaj)
VALUES(2, 'Alika', 'amstaf', 6, 'pies');
INSERT INTO zwierze2(id_zwierze, imie, rasa, wiek, rodzaj)
VALUES(3, 'Killer', 'jamnik', 4, 'pies');
INSERT INTO zwierze2(id_zwierze, imie, rasa, wiek, rodzaj)
VALUES(4, 'Thor', 'dachowiec', 4, 'kot');
INSERT INTO zwierze2(id_zwierze, imie, rasa, wiek, rodzaj)
VALUES(5, 'Randi', 'kundel', 4, 'pies');
INSERT INTO zwierze2(id_zwierze, imie, rasa, wiek, rodzaj)
VALUES(6, 'Hamer', 'amstaf', 8, 'pies');
INSERT INTO zwierze2(id_zwierze, imie, rasa, wiek, rodzaj)
VALUES(7, 'Bobik', 'jamnik', 4, 'pies');
INSERT INTO zwierze2(id_zwierze, imie, rasa, wiek, rodzaj)
VALUES(8, 'Deral', 'jamnik', 6, 'pies');
INSERT INTO zwierze2(id_zwierze, imie, rasa, wiek, rodzaj)
VALUES(9, 'Doge', 'jamnik', 7, 'pies');
INSERT INTO zwierze2(id_zwierze, imie, rasa, wiek, rodzaj)
VALUES(10, 'Dogeł', 'amstaf', 9, 'pies');
INSERT INTO zwierze2(id_zwierze, imie, rasa, wiek, rodzaj)
VALUES(11, 'Szak', 'amstaf', 10, 'pies');
INSERT INTO zwierze2(id_zwierze, imie, rasa, wiek, rodzaj)
VALUES(12, 'Pies', 'kundel', 14, 'pies');
在结果中,我想获得列“rasa”的表格,每个“wiek”的行 并计算出确切的 wiek='10' 等有多少 amstaf。
我编码:
SELECT 4, 6, 7, 8, 9, 10, 14, rasa FROM zwierze2
PIVOT (
COUNT(rasa) FOR
wiek IN ([4],[6],[7],[8],[9],[10],[14]))
AS ilosc_psow_danej_rasy_w_danym_wieku
而且我没有很好地编码,它不起作用。 我还需要它的动态版本,但已经堆在这里了。
编辑 找到另一个断点,现在是动态的。我没有得到独特的 rasa。
DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
--Get distinct values of the PIVOT Column
SELECT @ColumnName= ISNULL(@ColumnName + ',','')
+ QUOTENAME(wiek)
FROM (SELECT DISTINCT wiek from zwierze) as wiek
SET @DynamicPivotQuery=
N'SELECT rasa, ' + @ColumnName +'
FROM zwierze
PIVOT(Count(id_zwierze)
FOR wiek IN (' + @ColumnName + ')) AS PVTTable'
EXEC(@DynamicPivotQuery);
【问题讨论】:
标签: sql dynamic static sql-server-2012 pivot-table