我希望您能在这方面帮助我: 我想创建一个查询,以便将表的记录作为列,但是此列可以有多行。
示例:
| Id | Value | ColumnName |
| 1 | A | Q1 |
| 2 | B | Q2 |
| 3 | C | Q2 |
| 4 | D | Q2 |
| 5 | E | Q3 |
| 6 | F | Q3 |
这就是我想要的:
| Q1 | Q2 | Q3
| A | B | E
| NULL | C | F
| NULL | D | NULL
如何在一个查询中获得此结果? (我确实需要在查询中添加它,因为我需要为此创建一个视图)
感谢和问候!
答案 0 :(得分:3)
您可以对row_number()
使用条件聚合:
select max(case when columnname = 'Q1' then value end) as q1,
max(case when columnname = 'Q2' then value end) as q2,
max(case when columnname = 'Q3' then value end) as q3
from (select t.*,
row_number() over (partition by columnname order by id) as seqnum
from t
) t
group by seqnum;
答案 1 :(得分:1)
您可以尝试使用数据透视
foreach (var chr in data.Distinct())
{
al.Add($"{chr} ({(int) chr}) {data.Count(c => c == chr)}");
}