Mysql 需要sql或存储过程根据标志获取数据吗?

Mysql 需要sql或存储过程根据标志获取数据吗?,mysql,sql,sql-server,oracle,Mysql,Sql,Sql Server,Oracle,Ex-我有如下表名\u类型- 第二个表A如下所示- 需要结果集如下- 描述 在第二个表中,T_ID和T_值是唯一的。 我只需要名称\类型\代码作为结果中的列名,表\ A中的值为1。 例如,与名称\u类型\u代码DN一样,任何T\u ID都没有值 对于CN也是一样,因为我们的值为0,所以我们不需要。您可能更喜欢使用解码作为: 根据这两个输入表,我不知道你是如何得到输出的。你能解释一下为什么6个代码中只有4个最终成为列名吗?为什么重复的行,不是这样的数据透视点将所有数据收集在一行中吗?@Joakim

Ex-我有如下表名\u类型-

第二个表A如下所示-

需要结果集如下-

描述 在第二个表中,T_ID和T_值是唯一的。 我只需要名称\类型\代码作为结果中的列名,表\ A中的值为1。 例如,与名称\u类型\u代码DN一样,任何T\u ID都没有值 对于CN也是一样,因为我们的值为0,所以我们不需要。

您可能更喜欢使用解码作为:


根据这两个输入表,我不知道你是如何得到输出的。你能解释一下为什么6个代码中只有4个最终成为列名吗?为什么重复的行,不是这样的数据透视点将所有数据收集在一行中吗?@JoakimDanielson我们还有其他列和值,它们也是唯一的,比如T1,我们有两个值A和B,我没有在这里添加。@TimBiegeleisen我需要不同的名称\u类型\u代码作为结果中的列名,仅当值1出现在表\u A.Ex中时。与名称\u类型\u代码DN类似,任何T\u ID都没有值,与CN相同,就像我们有值0,所以我们不需要。删除此问题,然后再次发布,确保清楚地解释您的逻辑。解释SQL查询的最佳方法是显示最小的输入和预期的输出。您不一定需要如此复杂的查询/数据集来获得如何解决问题的帮助。是否有选项可以删除硬代码名称\u类型,如decoden.code、'AN',a.value,0作为存储过程,这里对我也有好处。@AnshulDubey不幸的是,没有。
+--------------+----------+
| Name_Type_Id |  Code    |
+--------------+----------+
|            1 |   AN     |
|            2 |   BN     |
|            3 |   CN     |
|            4 |   DN     |
|            5 |   EN     |
|            6 |   FN     |
+--------------+----------+
+-------+---------+--------------+------------------+
|  T_ID | T_Value | Name_Type_Id | Name_Type_Value  |
+-------+---------+--------------+------------------+
|  T1   |  A      |            1 |               1  |
|  T1   |  B      |            3 |               0  |
|  T2   |  A      |            2 |               1  |
|  T2   |  B      |            5 |               1  |
|  T2   |  C      |            6 |               1  |
|  T3   |  A      |            1 |               0  |
|  T3   |  B      |            6 |               1  |
|  T4   |  A      |            1 |               0  |
|  T5   |  A      |            2 |               1  |
+-------+---------+--------------+------------------+
+-------+---------+------+------+-------+-----+
| T_ID  | T_Value | AN   |  BN  |   EN  |  FN |
+-------+---------+------+------+-------+-----+
|    T1 |  A      |  1   |   0  |   0   |   0 |
|    T1 |  B      |  0   |   0  |   0   |   0 |
|    T2 |  A      |  0   |   1  |   0   |   0 |
|    T2 |  B      |  0   |   0  |   1   |   0 |
|    T2 |  C      |  0   |   0  |   0   |   1 |
|    T3 |  A      |  0   |   0  |   0   |   0 |
|    T3 |  B      |  0   |   0  |   0   |   1 |
|    T4 |  A      |  0   |   0  |   0   |   0 |
|    T5 |  A      |  0   |   1  |   0   |   0 |
+-------+---------+------+------+-------+-----+
select a.t_id, a.T_Value,
       decode(n.code,'AN',a.value,0) as "AN",
       decode(n.code,'BN',a.value,0) as "BN",
       decode(n.code,'EN',a.value,0) as "EN",
       decode(n.code,'FN',a.value,0) as "FN"
  from Table_A a
  left join Name_Type n 
    on ( n.name_type_id = a.name_type_id )    
  group by a.t_id, a.T_Value, a.value, n.code  
  order by a.t_id, a.T_Value;

  T_ID  T_VALUE AN  BN  EN  FN
   T1       A   0   0   0   0
   T1       B   1   0   0   0
   T2       A   0   1   0   0
   T2       B   0   0   1   0
   T2       C   0   0   0   1
   T3       A   0   0   0   0
   T3       B   0   0   0   1
   T4       A   0   0   0   0
   T5       A   0   1   0   0