Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 避免SQL Server查询中的重复代码_Sql Server 2008 - Fatal编程技术网

Sql server 2008 避免SQL Server查询中的重复代码

Sql server 2008 避免SQL Server查询中的重复代码,sql-server-2008,Sql Server 2008,我有一个与此类似的查询: SELECT CASE WHEN A = 1 THEN 'one' WHEN A = 2 THEN 'two' END AS Number FROM [table] WHERE A = 1 OR A = 2 在实际查询中,比较更复杂,并且有更多的列,但对于问题来说,这并不重要 无论如何,我想知道是否有一种很好的方法可以只在其中一个位置进行比较,但仍然得到相同的结果?您可以创建一个包含必要数据的映射表并将其连接起来。是的,这很有效。我有点

我有一个与此类似的查询:

SELECT
  CASE
    WHEN A = 1 THEN 'one'
    WHEN A = 2 THEN 'two'
  END AS Number
FROM [table]
WHERE
  A = 1
  OR A = 2
在实际查询中,比较更复杂,并且有更多的列,但对于问题来说,这并不重要


无论如何,我想知道是否有一种很好的方法可以只在其中一个位置进行比较,但仍然得到相同的结果?

您可以创建一个包含必要数据的映射表并将其连接起来。是的,这很有效。我有点感兴趣的是,在查询中是否有这样做的方法。但我想这无缘无故地让事情变得复杂了。无论如何,谢谢你,你可以做一个“虚拟表”而不是一个真实的表,并将其用作映射表,也就是说,你加入这个表
(选择1作为c1,选择1作为c2,所有选择2,'2')作为虚拟表
。但这不是一个好主意-总是使用映射表。也许你指的是简单的case语句,而不是搜索到的case语句:case a当1时,然后是'one'当2时,然后是'two'其他'something'结束