我正在使用一个使用数据库的C#应用程序。我需要将两张桌子连在一起,但它们之间的联系很奇怪。一个表中包含标识A,B,C等数据的字母,另一个表具有标识类型的字符串值,如“小”或“大”
我需要加入表格,以便第一个表格列中的值与代码“a”链接到另一个表格的列,其值为“small”,值为“b”或“d”链接到另一个表的“大”的价值
使用标准SQL执行此操作的最佳方法是什么。有没有什么方法可以在join语句中有额外的条件,或者最好在where子句中做这样的事情?
谢谢,
-Jake
答案 0 :(得分:1)
处理此问题的最简单方法是使用一个映射值的中间表。然后,您可以将此表添加到语句中,并使用它将主表连接在一起。
答案 1 :(得分:0)
制作一个案例陈述,将第一张表格中的'小'和b,c,d ...映射为'大',新字段加入表格
答案 2 :(得分:0)
制作中间表或查询。
SELECT *
FROM (
SELECT CASE col WHEN 'A' THEN 'small'
WHEN 'B' THEN 'large'
WHEN 'D' THEN 'large'
ELSE NULL
END AS col
FROM one
) x
JOIN two t
ON x.col = t.col
答案 3 :(得分:0)
根据您的描述,我认为您可以使用公用表表达式来选择所需的值,以及具有A,B,C值的列。然后使用CTE加入第二个表。它将如下所示。
;与A_CTE(列)
AS
(
选择column1,columnb,CASE A_B_C_COLUMN当'A'那么'大'时'B'那么'小''C'那么'TINY'结束为ColumnC
)
从A_CTE JOIN TABLEB中选择* A_CTE.ColumnC = TABLEB.ConditionColumn
如果您可以提供更多详细信息,请尽快为您编写SQL语句。