Sql 如何使用distinct子句进行排序
我在SQLServer中有一个表,其中有一些值。举例如下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
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我做到了