Sql 显示来自同一字段的两个不同值

Sql 显示来自同一字段的两个不同值,sql,sql-server-2008,Sql,Sql Server 2008,嗨,我有两张桌子 1-名称、id、代码 2-id、值、概念 一个名称可以有两个概念和两个值。我想回顾一下: Id、名称、值1、值2 我该怎么做 例如,你可以做些什么 SELECT t.id, t.name, t.value as value1, t2.value as value2 FROM table2 as t INNER JOIN table2 as t2 ON t.id = t2.id AND t.value <> t2.value 选择t.id、t.name、t

嗨,我有两张桌子 1-名称、id、代码 2-id、值、概念

一个名称可以有两个概念和两个值。我想回顾一下: Id、名称、值1、值2

我该怎么做


例如,你可以做些什么

SELECT t.id, t.name, t.value as value1, t2.value as value2
FROM table2 as t
     INNER JOIN table2 as t2 ON t.id = t2.id AND t.value <> t2.value
选择t.id、t.name、t.value作为值1、t2.value作为值2
表2中的t
内部联接表2为t.id上的t2=t2.id和t.value t2.value
但是还有很多其他的方法

编辑

选择t1.id、t1.name、t2a.value作为值1、t2b.value作为值2
表1中的t
t.id=t2a.id上作为t2a的内部联接表2
内部联接表2作为t.id上的t2b=tba.id和t2b.value t2a.value
注意:解决方案假设每个id有2行(如果有3行,您将在结果中获得每个id的多行)

这将是一个开始:

SELECT
    T.id,
    T.name,
    V1.value AS value1,
    V2.value AS value2
FROM
    My_Table T
LEFT OUTER JOIN My_Values V1 ON V1.id = T.id
LEFT OUTER JOIN My_Values V2 ON V1.id = T.id

但这里的问题是,值1和值2的区别是什么?它是“概念”中的一个值吗?它是先添加到DB中的一个问题吗?对于其他列,哪个列的id更高?您的要求没有完全阐明。

使用哪个字段链接表1和表2?或者id是公共密钥?请澄清此问题。听起来您想对这两个表执行联接操作,通过id联接。看起来不错,只是您只使用了他提到的第二个表,并且“name”列位于第一个表中。我要添加的唯一一件事是在table1.id=table2.id上将table1作为t1进行另一次连接,这样他就可以将name字段作为t1.name
SELECT
    T.id,
    T.name,
    V1.value AS value1,
    V2.value AS value2
FROM
    My_Table T
LEFT OUTER JOIN My_Values V1 ON V1.id = T.id
LEFT OUTER JOIN My_Values V2 ON V1.id = T.id