Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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 如何使用distinct子句进行排序_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 如何使用distinct子句进行排序

Sql 如何使用distinct子句进行排序,sql,sql-server,tsql,Sql,Sql Server,Tsql,我在SQLServer中有一个表,其中有一些值。举例如下 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.[Tra

我在SQLServer中有一个表,其中有一些值。举例如下

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.

,“+trans1.ProductNo
——问题出在这里。SQL server认为您正在尝试向数字添加逗号。尝试将
trans1.ProductNo
更改为
CAST(trans1.ProductNo作为VARCHAR)
,“+trans1.ProductNo——问题出在这里。SQL server认为您正在尝试向数字添加逗号。尝试将
trans1.ProductNo
更改为
CAST(trans1.ProductNo作为VARCHAR)
,“+trans1.ProductNo——问题出在这里。SQL server认为您正在尝试向数字添加逗号。尝试将
trans1.ProductNo
更改为
CAST(trans1.ProductNo作为VARCHAR)
,“+trans1.ProductNo——问题出在这里。SQL server认为您正在尝试向数字添加逗号。尝试将
trans1.ProductNo
更改为
CAST(trans1.ProductNo作为VARCHAR)

您需要将int列转换为字符串才能连接。否则,它会试图将逗号转换为无法转换的int

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

请参阅新查询:

SELECT DISTINCT trans.[Transaction], 
STUFF(( SELECT ',' + str(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

您需要将int列转换为字符串才能连接。否则,它会试图将逗号转换为无法转换的int

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

请参阅新查询:

SELECT DISTINCT trans.[Transaction], 
STUFF(( SELECT ',' + str(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

您需要将int列转换为字符串才能连接。否则,它会试图将逗号转换为无法转换的int

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

请参阅新查询:

SELECT DISTINCT trans.[Transaction], 
STUFF(( SELECT ',' + str(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

您需要将int列转换为字符串才能连接。否则,它会试图将逗号转换为无法转换的int

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

请参阅新查询:

SELECT DISTINCT trans.[Transaction], 
STUFF(( SELECT ',' + str(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

我假设
ProductNo
是一个
INT
?,那么,您希望如何在不首先转换它的情况下将它与
,'
连接起来?。使用
SELECT'、'+CAST(trans1.ProductNo作为VARCHAR(5))
或类似的方法感谢@Lamak我完成了它我假设
ProductNo
是一个
INT
?,那么,在不首先转换它的情况下,您想如何将它与
连接起来呢?。使用
SELECT'、'+CAST(trans1.ProductNo作为VARCHAR(5))
或类似的方法感谢@Lamak我完成了它我假设
ProductNo
是一个
INT
?,那么,在不首先转换它的情况下,您想如何将它与
连接起来呢?。使用
SELECT'、'+CAST(trans1.ProductNo作为VARCHAR(5))
或类似的方法感谢@Lamak我完成了它我假设
ProductNo
是一个
INT
?,那么,在不首先转换它的情况下,您想如何将它与
连接起来呢?。使用
SELECT'、'+CAST(trans1.ProductNo作为VARCHAR(5))
或类似的方法感谢@Lamak我做到了