请问有人请教我如何在SQL SERVER 2008中获得结果
答案 0 :(得分:0)
在您的查询中尝试以下更改
set @query = 'SELECT ' + @cols + ' from
(
select [Generic Name], Description
from @TABLE
) x
pivot
(
MAX([Generic Name])
for Description in (' + @cols + ')
) p '
由于您正在转移记录,因此不会有列 [通用名称] - 我不会在表格结构中看到任何此类列,因此我&#39 ; m假设您需要列基本名称 - 所以@Cols参数就足够了
请检查Demo此处
答案 1 :(得分:0)
你是否想要做这样的事情:
IF OBJECT_ID('tempdb..#TABLE') IS NOT NULL
BEGIN;
DROP TABLE #TABLE;
END;
CREATE TABLE #TABLE
(
[Generic Name] varchar(15),
[Description]varchar(15)
)
INSERT #TABLE
SELECT 'RESISTOR', 'POWER' UNION ALL
SELECT 'RESISTOR', 'Type' UNION ALL
SELECT 'RESISTOR', 'DESIGN' UNION ALL
SELECT 'RESISTOR', 'Material' UNION ALL
SELECT 'OTHER', 'Other' UNION ALL
SELECT 'OTHER', 'Material';
DECLARE @cols NVARCHAR(MAX)
,@query NVARCHAR(MAX);
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Description)
from #TABLE
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT [Generic Name], ' + @cols + '
FROM
(
SELECT [Generic Name], [Generic Name] AS [BaseName], [Description]
from #TABLE
) DS
pivot
(
COUNT([BaseName])
for [Description] in (' + @cols + ')
) p '
SELECT @query
execute(@query)
这将显示每个通用名称的count
(但如果每个描述只有一条记录,则只有true / have或false / not)。