【发布时间】:2021-05-12 07:10:05
【问题描述】:
我正在尝试在表格下方进行透视,这可能吗?
但如果我按代码聚合它们,值 A 或 B 将因此而消失。
来自
| Name | Code | Value |
|---|---|---|
| Kevin | Code1 | A |
| Kevin | Code1 | B |
| Kevin | Code2 | C |
| Kevin | Code3 | D |
| Tom | Code1 | E |
| Tom | Code2 | F |
| Tom | Code3 | G |
到
| Name | Code1 | Code2 | Code3 |
|---|---|---|---|
| Kevin | A | C | D |
| Kevin | B | C | D |
| Tom | E | F | G |
我试过的查询....
DECLARE @cols AS NVARCHAR(max), @query AS NVARCHAR(max);
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.Code)
FROM Table c
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(max)'),1,1,'')
set @query = 'with mapping as
(SELECT
Name
, ' + @cols + '
from (select name
, Code
, Value
from Table) x
pivot
(max(Code)
for Name in (' + @cols + ')) p )'
execute(@query)
我自己试过了,但我只能在下面实现
| Name | Code1 | Code2 | Code3 |
|---|---|---|---|
| Kevin | A or B(depend on aggregated max or min) | C | D |
| Tom | E | F | G |
提前致谢
【问题讨论】:
-
我想说这不是枢轴函数的想法。 Code1 是一个值或一个键 - 您可以对其执行聚合,或者以与使用名称相同的方式使用它。
标签: sql sql-server tsql pivot