我有一个包含INT Id
列的表格。我需要在子查询中选择ID作为逗号分隔值。
我试过了:
DECLARE @ids VARCHAR(MAX)
SELECT @ids= COALESCE(@ids +',' ,'') + Convert(nvarchar(8), Id)
FROM TableX
SELECT @ids
它可以工作,但问题是我不能使用声明的变量。有没有办法避免变量使用?
示例:
SELECT Id FROM TableX
结果:
1
2
5
7
我想:
1,2,5,7
答案 0 :(得分:3)
试试这个
#!/bin/bash
#
# Separate (camera) images on directory
# to year named folders.
#
# All files must be named as "yyyy-mm-dd HH:MM:SS.ext"
#
for img in *.{jpg,jpeg,png}; do
[ ! -f "$img" ] && continue
year=${img:0:4}
[ -d "$year" ] || mkdir "$year"
mv -iv "$img" "$year/"
done
无变量:
DECLARE @query nvarchar(max)
select @query = STUFF( (SELECT N',' + cast( id as nvarchar)
from TableX
FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'')
select @query
答案 1 :(得分:0)
您可以创建一个函数来放置代码
create function dbo.csv ()
returns varchar(max)
as
begin
DECLARE @ids VARCHAR(MAX)
SELECT @ids= COALESCE(@ids +',' ,'') + Convert(nvarchar(8), Id)
FROM TableX
return @ids
end
并且在上下文中使用fucntion,你不能使用变量
select dbo.csv()
此致