重复相同的SQL

时间:2013-07-28 16:07:14

标签: sql-server

我在SQL Server存储过程中编写了一个CASE语句。在那里,我每次为11个CASE重复相同的长SQL语句。我应该在另一个存储过程中将SQL语句置于CASE条件中吗?什么是最好的方法?

CASE (SELECT ..................)
THEN  'SELCET a.field'
ELSE
 ''SELECT vlaues'
END
as 'Coulmn1 ' 

CASE (SELECT ..................)
THEN  'SELCET vaues'
ELSE
 ''SELECT vlaues'
END
as 'Coulmn1 ' 

4 个答案:

答案 0 :(得分:1)

您可能想要执行类似

的操作
SELECT
CASE (your select statement which retuns one value)
WHEN 'option1' THEN 'value2return1'
WHEN 'option2' THEN 'value2return2'
WHEN 'option3' THEN 'value2return3'
...
ELSE 'defaultValue'
END

答案 1 :(得分:0)

使用公用表格式link

    WITH CTE (ColA)
    AS
    (
        Select ColA From Table
    )
    SELECT ColA
    FROM CTE

答案 2 :(得分:0)

使用CTE。如果你给我们一个更好的代码示例,将来会有所帮助。

WITH RepeateSelect AS (SELECT ..................)
.....
.....
CASE (SELECT * FROM RepeateSelect)
THEN  'SELCET a.field'
ELSE
 'SELECT vlaues'
END
as 'Coulmn1 ' 

CASE (SELECT * FROM RepeateSelect)
THEN  'SELCET vaues'
ELSE
 ''SELECT vlaues'
END
as 'Coulmn1 ' 

答案 3 :(得分:0)

尝试使用重复查询一次:

select A.C1, X.C2, X.C3
  from TableA as A inner join
    ( select B.AlmondJoy,
        case when B.YN > 7 then 'Yes' else 'No' end as C2,
        case when C.UD in ( -1, 1 ) then 'Up' else 'Down' end as C3
        from TableB as B inner join
          TableC as C on C.Id = B.Id
      ) as X on X.AlmondJoy = A.Zagnut