c# - 根据字段具有不同列数的交叉表/数据透视表查询

标签 c# mysql pivot

我需要使用一组列标题来旋转我的表,这些列标题根据输出中的一个字段而变化。

这是目前的样子:

id | Name | Test Name | Test Performed | Test Value
1    John     HIV         EIA            Reactive
1    John     HIV         EIA2           Reactive
1    John     HIV         WB             Positive
1    John     HIV         Final Kit      Positive
2    Mark     HIV         Rapid          Reactive
2    Mark     HIV         EIA            Reactive
2    Mark     HIV         EIA2           Reactive
2    Mark     HIV         Final Result   Positive
2    Mark     Immuno      CD4%           12.0%
2    Mark     Immuno      CD4 Lympo      1299
2    Mark     Immuni      CD4 Absolute   838
3    Carl     SY          RPR            Reactive
3.   Carl     SY          TPHA           Reactive

我希望它是这样的,您可以看到列根据执行的测试动态变化:

id | Name | Test Name | EIA      | EIA2   | Rapid |  WB         |Final Kit 
1    John    HIV        Reactive  Reactive           Positive
2    Mark    HIV        Reactive  Reactive           Reactive    Reactive

id | Name | Test Name | CD4% | CD4 Lympo | CD4 Absolute
1    Mark   Immuno      12.0%  1299         838 


id | Name | Test Name | RPR    | TPHA
3    Carl    SY         Reactive  Reactive

最佳答案

要像您正在寻找的那样进行有效的动态列查询,需要恶作剧。我之前采用的方法† 通常是使用一个交叉表/数据透视表查询来捕获列 numbers 之间的映射(其中您有一些合适的最大值 N ) 和每个条目的最后一列标签。其输出类似于:

Test Name   |Test Performed |Index
HIV         |EIA            |1
HIV         |EIA2           |2
[…]

然后您有另一个查询以另一种方式映射,结果如下:

Test Name   |1      |2          |3              |4      |5
HIV         |EIA    |EIA2       |Rapid          |WB     |Final Kit
Immuno      |CD4%   |CD4 Lympo  |CD4 Absolute   |       |
SY          |RPR    |TPHA       |               |       |

最后,您将第一个映射的 IndexTest NameTest Performed 连接起来,以生成交叉表,当您显示结果时,在第二个映射中查找列名称/索引 以返回Test Performed

†​​虽然 不是 在 MySQL 或 C# 中。可转移性很有趣!

我稍后会编辑以添加示例 SQL,一旦我挖掘并正确地抽象它。不过,现在应该可以大致了解一下。

关于c# - 根据字段具有不同列数的交叉表/数据透视表查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29360096/

相关文章:

c# - 在页面加载时调用 Jquery 函数

php - Laravel 5.6 - 将 mySql 数据库备份到 S3?

python - pandas pivot_table 保持索引

python - Pandas,由 2 列组成的数据透视表,其值是其中一列的计数

c# - 组的可选正则表达式匹配不起作用

c# - 这是快速排序吗?

mysql - SQL 对两个连接表进行排序

Php 和 Mysql - 检测重复条目

python - 使用另一个 DataFrame 创建或修改 DataFrame

c# - 什么是 C# 的 system.datetime.Ticks() 的 python 等价物?