Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL中Select子句中的逗号分隔值_Sql_Sql Server_Select - Fatal编程技术网

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多年前)中,旧样式的逗号分隔表列表样式被正确的ANSI
JOIN
语法所取代,它的使用仅限于此查询。我通常在查询中使用内部联接/外部联接。谢谢你的反馈!工作得很有魅力。我真傻!!非常感谢:)工作得很有魅力。我真傻!!非常感谢:)