不同的SQL Select查询

时间:2015-11-09 10:13:50

标签: sql sql-server-2012

我需要编写SQL查询才能提取一些数据。

我在表格中有这些数据:

ID  Store   Value
1    9921    NOK
2    9921    NOK1
3    9921    OK3

我需要的是从选择查询中获取数据,如:

9921         NOK,NOK1,OK3

请帮忙吗?

4 个答案:

答案 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)

通过以下示例

Demo: [SQLFiddle]

您会将预期结果视为“CombineValues”

store   CombineValues
9921    NOK,NOK1,NOK2