SQL查询从同一列的多个值循环一行

JDL

我有两个表(table_A,Table_B)和

需要有关子查询的帮助或从列中选择多个值的可能解决方案 TABLE_A.DESCRIPString

TABLE_A:
ID     PARTNUM     DESCRIPString
1      4456        121~134~111
2      4457        122~111
3      4458        122~134
4      4459        111
5      4460        121~134~111

交叉搭配 TABLE_B.DESCRIPID

TABLE_B:
ID     DESCRIPID   DECSRIPLong
1      121         Silver
2      122         Black
3      111         Mask
4      134         Pickle

最后显示以下内容:

Table_AB

ID     PARTNUM     DESCRIPString    PARTDESCRIP
1      4456        121~134~111      Silver~Pickle~Mask
2      4457        122~111          Black~Mask
3      4458        122~134          Black~Pickle
4      4459        111              Mask
5      4460        121~134~111      Silver~Pickle~Mask

我知道大多数人会建议将数据库重做为每列单个变量,但是在这种情况下不能这样做。

卡尔·克鲁斯

将此函数放到模块中并运行此查询。它应该给您所要求的结果。您没有指定数据类型,因此我在函数中使用了变体。

Public Function fnParseDescr(strWork As Variant) As String
Dim vEnd
Dim strTemp As String
Dim strLook As String
Dim strResult As String
strResult = ""
strWork = Trim(CStr(strWork))
Do While Len(strWork) > 0
    If InStr(strWork, "~") = 0 Then
        strLook = Trim(DLookup("[DESCRIPLong]", "TABLE_B", "[DESCRIPID] = CVar('" & strWork & "')"))
        strResult = strResult & "~" & strLook
        strWork = ""
    Else
        vEnd = InStr(strWork, "~") - 1
        strTemp = Left(strWork, vEnd)
        strLook = Trim(DLookup("[DESCRIPLong]", "TABLE_B", "[DESCRIPID] = CVar('" & strTemp & "')"))
        strResult = strResult & "~" & strLook
        strWork = Right(strWork, (Len(strWork) - (vEnd + 1)))
        strTemp = ""
        strLook = ""
    End If
Loop
If Left(strResult, 1) = "~" Then strResult = Right(strResult, (Len(strResult) - 1))
fnParseDescr = strResult
Exit Function
End Function


SELECT ID,
    PARTNUM, 
    DESCRIPString, 
    fnParseDescr([DESCRIPString]) AS PARTDESCRIP
FROM TABLE_A;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL查询来获取计算一行从同一列中的值

在SQL的一行中显示同一列中的多个值

在SQL查询中两次获得同一行中的同一列

MYQSL,如果查询与同一列/属性的多个条件匹配,则获得唯一行

查询以从一行的同一列中获取计算值

SQL 来自同一列的上一行

是否可以在 SQL 中将一列中的不同值分组为同一列中的一行?

SQL:在一列中显示同一行中差异值的计数

sql从同一表和同一列中的值获取到一行

SQL使用多个查询从同一表中获取多个值(来自同一列)

如何在ecxel“vlookup”中搜索多个列并从同一行的另一列返回值?

将同一行中的多个结果行按SQL Server 2008中的一列分组

将表格中的一行复制到另一行,并在同一查询中插入一列的值

如何从同一列的多个值获取行

SQL 查询从键表中选择多个条目到同一行的不同列中

SQL:如果满足条件,则将值从列复制到同一列中的另一行

如何使用sql查询在同一列中减去两行的值?

如何使用 SQL 查询在同一列中减去两行的值?

将一行中的多个SQL列转换为JSON并更新为同一行中的一列

匹配不在同一行和同一列中的特定值

SQL:仅当在同一行中另一列具有不同的值时,才返回一列的值

列中的条件值以更改另一列的同一行中的值

Google Sheet arrayformula 引用同一列的前一行:错误循环引用

如果同一行的另一列等于某值,如何计算一列中的值?

如何使用一列查找行并在另一列中返回同一行的值

根据Spark中上一行的同一列中的值计算值

根据同一行中另一列的值填充缺失值

根据上一行同一列中的值计算值

在同一行的另一列中为您命名的值查找相应的值