有两个表如下:
表1
code integer,
d1 single,
d2 single,
...
d6 single.
表2
code integer,
d string
表2中的字段d
应包含“d1”,“d2”,...,“d5”或“d6”。
现在,我尝试使用code (integer)
和d_value (single)
等字段撰写查询,其中d_value
检索值d1
,d2
,...或{{1} (来自表1)取决于表1中的字段d6
值。现在使用d
函数,它可以工作:
switch
然而,我觉得(并且相信)有更自然的方式而不是在SELECT Table1.code, Table2.d,
Switch(Trim([d])="d1",[d1],
Trim([d])="d2",[d2],
Trim([d])="d3",[d3],
Trim([d])="d4",[d4],
Trim([d])="d5",[d5],
Trim([d])="d6",[d6])
AS [d_value] FROM Table1 INNER JOIN Table2 ON Table1.[code] = Table2.[code];
函数中写下d1
,...,d6
六个案例。
提前致谢
答案 0 :(得分:2)
表格1的表格
code d1 d2 d3 d4 d5 d6
---- --- --- --- --- --- ---
1 1.1 1.2 1.3 1.4 1.5 1.6
2 2.1 2.2 2.3 2.4 2.5 2.6
Switch
方法是使用静态SQL实现它的实用方法。但是,如果
Switch
方法然后你应该重新组织Table1为
code category d_value
---- -------- -------
1 d1 1.1
1 d2 1.2
1 d3 1.3
1 d4 1.4
1 d5 1.5
1 d6 1.6
2 d1 2.1
2 d2 2.2
2 d3 2.3
2 d4 2.4
2 d5 2.5
2 d6 2.6
所以你可以简单地做
SELECT Table1.code, Table2.d, Table1.d_value
FROM Table1 INNER JOIN Table2
ON Table1.code = Table2.code AND Table1.category = Table2.d
重新制作原作"宽" Table1的形式你可以随时使用
TRANSFORM Min([d_value]) AS MinOfd_value
SELECT [code]
FROM Table1
GROUP BY [code]
PIVOT [category]