SELECT FNumber, ZNumber,ZName FROM kingdee_bom_view如何在sqlsever里把FNumber相同的ZNumber,ZName放到一个集合里面
时间: 2024-09-19 08:14:40 浏览: 33
sql表连接查询使用方法(sql多表连接查询)
在SQL Server中,如果你想将具有相同`FNumber`的`ZNumber`和`ZName`放在一起形成一个集合,你可以使用`GROUP BY`和`SELECT`语句结合子查询或者`WITH`语句创建临时表。这里有一个示例:
```sql
; WITH CTE AS (
SELECT FNumber, ZNumber, ZName,
ROW_NUMBER() OVER (PARTITION BY FNumber ORDER BY ZNumber) AS RowNum
FROM kingdee_bom_view
)
SELECT FNumber, GROUP_CONCAT(ZNumber SEPARATOR ', ') AS ZNumberList,
GROUP_CONCAT(ZName SEPARATOR ' & ') AS ZNameList
FROM CTE
WHERE RowNum = 1
GROUP BY FNumber;
```
这个查询首先通过窗口函数`ROW_NUMBER()`对每个`FNumber`下的`ZNumber`和`ZName`进行排序,并给每一行分配一个行序号。然后`WHERE`子句只选择每组的第一个元素(`RowNum = 1`),最后使用`GROUP_CONCAT`函数合并每个`FNumber`的所有`ZNumber`和`ZName`。
阅读全文