SQL中Select子句中的逗号分隔值
我有两张桌子:确认书和确认书 构象表如下所示:SQL中Select子句中的逗号分隔值,sql,sql-server,select,Sql,Sql Server,Select,我有两张桌子:确认书和确认书 构象表如下所示: ID_CONF | ID_LOT | QTY 1005 175 25 1006 175 24 1007 175 23 1008 176 50 ID_CONF | ID_PRESS 1005 11 1005 22 1005 33 1006 12 1006 13 1007
ID_CONF | ID_LOT | QTY
1005 175 25
1006 175 24
1007 175 23
1008 176 50
ID_CONF | ID_PRESS
1005 11
1005 22
1005 33
1006 12
1006 13
1007 14
确认\u按表如下所示:
ID_CONF | ID_LOT | QTY
1005 175 25
1006 175 24
1007 175 23
1008 176 50
ID_CONF | ID_PRESS
1005 11
1005 22
1005 33
1006 12
1006 13
1007 14
现在我需要确认表中ID_LOT=175的所有数据,但我需要ID_按逗号分隔的值
例如,对于ID_标段175,应显示以下结果:
ID CONF | ID_LOT | QTY | ID_PRESS
--------+--------+-----+----------
1005 175 25 11,22,33
1006 175 24 12,13
1007 175 23 14
我的查询如下所示:
SELECT
C.ID_CONF,
C.QTY,
C.ID_LOT,
STUFF((
SELECT CAST(',' AS VARCHAR(MAX)) + CAST(CP.ID_PRESS AS VARCHAR(5))
FROM CONFIRMATION C,
CONFIRMATION_PRESS CP
WHERE
C.ID_CONF = CP.ID_CONF
FOR XML PATH('')), 1, 1, '') PRESS_CSV
FROM
CONFIRMATION C
WHERE
C.ID_LOT = 175
但它返回以下输出:
ID CONF | ID_LOT | QTY | ID_PRESS
--------+--------+-----+------------------
1005 175 25 11,22,33,12,13
1006 175 24 11,22,33,12,13
1007 175 23 11,22,33,12,13
我做错了什么
请帮忙
问候 不要再次联接子查询上的确认表。您需要与主查询相关的行
SELECT
C.ID_CONF,
C.QTY,
C.ID_LOT,
STUFF((
SELECT CAST(',' AS VARCHAR(MAX)) + CAST(CP.ID_PRESS AS VARCHAR(5))
FROM CONFIRMATION_PRESS CP
WHERE CP.ID_CONF = C.ID_CONF
FOR XML PATH('')), 1, 1, '') PRESS_CSV
FROM CONFIRMATION C
WHERE C.ID_LOT = 175
不要再次联接子查询上的确认表。您需要与主查询相关的行
SELECT
C.ID_CONF,
C.QTY,
C.ID_LOT,
STUFF((
SELECT CAST(',' AS VARCHAR(MAX)) + CAST(CP.ID_PRESS AS VARCHAR(5))
FROM CONFIRMATION_PRESS CP
WHERE CP.ID_CONF = C.ID_CONF
FOR XML PATH('')), 1, 1, '') PRESS_CSV
FROM CONFIRMATION C
WHERE C.ID_LOT = 175
-在ANSI-92 SQL标准(20多年前)中,旧样式的逗号分隔表列表样式被正确的ANSI
JOIN
语法所取代,它的使用仅限于此查询。我通常在查询中使用内部联接/外部联接。谢谢你的反馈在ANSI-92 SQL标准(20多年前)中,旧样式的逗号分隔表列表样式被正确的ANSIJOIN
语法所取代,它的使用仅限于此查询。我通常在查询中使用内部联接/外部联接。谢谢你的反馈!工作得很有魅力。我真傻!!非常感谢:)工作得很有魅力。我真傻!!非常感谢:)