从同一个表中的1个主列创建2列

时间:2013-08-20 20:42:47

标签: sql

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 for variableID为1,将val2命名为variableID为4.如果我使用UNION ALL它可以工作,它创建2000条记录,前1000条作为val1记录,接下来1000作为val2记录,但不分开分为2个sep列。如何在2个单独的列中分隔此值列,如上所述。

我有2列

  • VALUE,其值为TEST56,TEST57,230,245
  • VARIABLEID = 1和4

  • TEST56和TEST57属于variableid == 1

  • 230和245属于variableid == 4

基于上面这个例子,我想创建一个视图,其中我有2列,如果变量= = 1则称为val1,如果变量id == 4则为val2。

所以看起来应该是这样的

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

提前致谢

1 个答案:

答案 0 :(得分: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