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