Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL将1个表的列连接到另一个表的行_Sql_Sql Server_Join - Fatal编程技术网

SQL将1个表的列连接到另一个表的行

SQL将1个表的列连接到另一个表的行,sql,sql-server,join,Sql,Sql Server,Join,在SQL server中,我有一些合乎逻辑的事情要做,如果我的问题无效或不可理解,请原谅,因为我不知道该如何问这个问题 我有两张桌子要转换成第三张桌子 第一个表是一个有列的“数据”表,但它们的值是代码,其文本可以在“选项”表中找到 第二个表是“选项”表,它是将“数据”表的代码转换为文本的主表 问题列是“数据”表的列 选项列是与代码对应的文本 代码列是“数据列”的值 假设我想要“数据”表中代码2的State列的文本,那么我将查看“Options”表并获得与State和代码2相对应的Option列值

在SQL server中,我有一些合乎逻辑的事情要做,如果我的问题无效或不可理解,请原谅,因为我不知道该如何问这个问题

我有两张桌子要转换成第三张桌子

第一个表是一个有列的“数据”表,但它们的值是代码,其文本可以在“选项”表中找到

第二个表是“选项”表,它是将“数据”表的代码转换为文本的主表

问题列是“数据”表的列

选项列是与代码对应的文本

代码列是“数据列”的值

假设我想要“数据”表中代码2的State列的文本,那么我将查看“Options”表并获得与State和代码2相对应的Option列值'Orissa'

结果表应仅包含从代码转换的文本

 State     | Language       | Gender
 Orissa    |    English     |   1
需要注意的一点是,性别列没有转换文本,因为该列“不”包含在“选项表”中

结果是动态创建的“数据”和“选项”表


任何帮助都将不胜感激。

尝试将第一张桌子连接到第二张桌子两次:

SELECT
    COALESCE(t2.Option, 'NA') AS State,
    COALESCE(t3.Option, 'NA') AS Language,
    t1.Gender
FROM table1 t1
LEFT JOIN table2 t2
    ON t1.State = t2.Code AND t2.Question = 'State'
LEFT JOIN table2 t3
    ON t1.Language = t3.Code AND t3.Question = 'Language';

再添加几行示例数据,并相应地调整预期结果。你试过什么?显示您当前的查询尝试。不清楚“数据”和“选项”表是动态创建的。你是说列数和列名是可变的吗?或者该状态(例如)有时可能会显示为不同但具有相同含义的内容?是的,“数据”表中的列是动态的,有3个“数据”表及其3个对应的“选项”表。在这种情况下,您需要充实您的问题。好的,可以充实它。您好,谢谢您的帮助,但我们可以创建完全动态的查询吗,这不取决于专栏。我对动态SQL不是很在行,但我也不完全理解你的评论。您在这里寻找什么?因为我们正在选择状态和语言,所以不知道应该选择哪些列。@ManojSoma您的请求对我来说毫无意义
 State     | Language       | Gender
 Orissa    |    English     |   1
SELECT
    COALESCE(t2.Option, 'NA') AS State,
    COALESCE(t3.Option, 'NA') AS Language,
    t1.Gender
FROM table1 t1
LEFT JOIN table2 t2
    ON t1.State = t2.Code AND t2.Question = 'State'
LEFT JOIN table2 t3
    ON t1.Language = t3.Code AND t3.Question = 'Language';