1
SELECT TOP 1000 [Value]                       
FROM [OnlineQnres].[dbo].[tmp_DataSets]
WHERE [VariableID] in ('1')
UNION ALL
SELECT TOP 1000 [Value]
FROM [OnlineQnres].[dbo].[tmp_oDataSets]
WHERE [VariableID] in ('4')

提供更新的详细信息

大家好,我在上面使用 UNION ALL 进行了这个选择查询。tmp_datasets 表中有一个名为 Value 和 VariableID 的列。我需要创建 2 个单独的列并将它们命名为 val1,如果 variableID 为 1,则为 val2,如果 variableID 为 4。如果我使用 UNION ALL,它会创建 2000 条记录,前 1000 条作为 val1 记录,接下来的 1000 条作为 val2 记录但不分开分成 2 个 sep 列。如上所述,我如何将此值列分隔为 2 个单独的列。

我有 2 列

  • VALUE有值TEST56,TEST57,230,245
  • 变量 ID = 1 和 4

  • TEST56 和 TEST57 属于 variableid == 1

  • 230 和 245 属于 variableid == 4

因此,基于上面的示例,我想创建一个视图,其中我有 2 个列,如果 variableid == 1,则称为 val1,如果 variable id == 4,则称为 val2。

所以它应该看起来像这样

  • val1 = 应该显示 test56 和 test57
  • val2 = 应该显示 230 和 245

提前致谢

4

1 回答 1

1

几个案例陈述应该做我认为你想要的:

SELECT TOP 1000
[Variable] 
CASE [VariableID]
  WHEN 1 THEN 1
  ELSE 0
END AS Val1,     
CASE [VariableID]
  WHEN 4 THEN 1
  ELSE 0
END AS Val2                       
FROM [OnlineQnres].[dbo].[tmp_DataSets]
WHERE [VariableID] = 1 or [VariableID] = 4

SQLFiddle 链接:http ://sqlfiddle.com/#!6/825f2/8/0

于 2013-08-21T00:58:46.793 回答