如何通过明确的子句来订购

时间:2015-05-14 16:50:28

标签: sql sql-server tsql

我在sql server中有一个表,其中有一些值。例如,如下所示

Transaction   ProductNo
------------- -------------
2001-01-01          1
2001-01-01          3
2001-01-01          4
2001-01-02          2
2001-01-02          3
2001-01-02          5

我写了一个查询如下

SELECT DISTINCT trans.[Transaction], 
STUFF(( SELECT ',' + trans1.ProductNo  AS [text()] FROM Transactions trans1 
WHERE trans.[Transaction]=trans1.[Transaction] ORDER BY trans1.[Transaction] FOR XML PATH('')), 1,1,'')[ProductNo] 
FROM Transactions trans

输出如下:

Transaction   ProductNo
------------- -------------
2001-01-01        1,3,4
2001-01-02        2,3,5

但我得到的是异常

Conversion failed when converting the varchar value ',' to data type int.

2 个答案:

答案 0 :(得分:2)

',' + trans1.ProductNo - 这是问题所在。 SQL Server认为您正在尝试向数字添加逗号。尝试将trans1.ProductNo更改为CAST(trans1.ProductNo AS VARCHAR)

答案 1 :(得分:1)

您需要将int列转换为字符串才能连接。否则它会尝试将你的逗号变成一个它不能的int。

STR()文档,用于将数字转换为字符串:link

查看新查询:

ToDictionary()