我需要编写SQL查询才能提取一些数据。
我在表格中有这些数据:
ID Store Value
1 9921 NOK
2 9921 NOK1
3 9921 OK3
我需要的是从选择查询中获取数据,如:
9921 NOK,NOK1,OK3
请帮忙吗?
答案 0 :(得分:0)
您可以使用STUFF:
SELECT DISTINCT Store,
STUFF((SELECT ',' + Value
FROM Your_Table
WHERE Store = 9921
FOR XML PATH('')), 1, 1, '')
FROM Your_Table
答案 1 :(得分:0)
尝试使用COALESCE
;
创建用于测试目的的样本表
CREATE TABLE SampleData (id INT ,store INT ,value NVARCHAR(50))
INSERT INTO SampleData VALUES (1 ,9921 ,'NOK')
INSERT INTO SampleData VALUES (2 ,9921 ,'NOK1')
INSERT INTO SampleData VALUES (3 ,9921 ,'NOK2')
创建一个标量值函数
Alter FUNCTION fun_GetCombinedData
(
@store int
)
RETURNS nvarchar(max)
AS
BEGIN
-- Declare the return variable here
DECLARE @CombineValue nvarchar(max)
SELECT @CombineValue = COALESCE(@CombineValue + ', ', '') + value
FROM SampleData where store=@store
RETURN @CombineValue
END
GO
最终查询,
SELECT store
,dbo.fun_GetCombinedData(store) AS value
FROM SampleData
GROUP BY store
预期产出:
store | value
------------------------
9921 | NOK,NOK1,NOK2
这是简化选择查询的方法之一。
答案 2 :(得分:0)
使用T-SQL我们可以这样做:
declare @store int = 9921, @values varchar(max) = ''
select @values = @values
+ case
when @values = '' then ''
else ','
end + value
from table_name
where store = @store
order by id
select @store, @values
答案 3 :(得分:-1)