22,206
社区成员
发帖
与我相关
我的任务
分享
DECLARE @MyVar INT
SET @MyVar = 1
declare @sql varchar(8000)
select @sql = 'SELECT '+CASE @MyVar
WHEN 1 THEN 'convert(VARCHAR(10),a1,120)'
WHEN 2 THEN 'convert(VARCHAR(10),b2,120)'
END+' AS dToday,Count(*) AS Nums
FROM '+CASE @MyVar
WHEN 1 THEN 'A'
WHEN 2 THEN 'B'
END+'
WHERE '+CASE @MyVar
WHEN 1 THEN 'convert(VARCHAR(10),a1,120)'
WHEN 2 THEN 'convert(VARCHAR(10),b2,120)'
END+' BETWEEN ''2002-01-01'' AND ''2009-05-01''
GROUP BY '+CASE @MyVar
WHEN 1 THEN 'convert(VARCHAR(10),a1,120)'
WHEN 2 THEN 'convert(VARCHAR(10),b2,120)'
END
exec(@sql)
--这样吧,动态执行
DECLARE @MyVar INT
SET @MyVar = 1
print
'SELECT '+CASE @MyVar
WHEN 1 THEN 'convert(VARCHAR(10),a1,120)'
WHEN 2 THEN 'convert(VARCHAR(10),b2,120)'
END+' AS dToday,Count(*) AS Nums
FROM '+CASE @MyVar
WHEN 1 THEN 'A'
WHEN 2 THEN 'B'
END+'
WHERE '+CASE @MyVar
WHEN 1 THEN 'convert(VARCHAR(10),a1,120)'
WHEN 2 THEN 'convert(VARCHAR(10),b2,120)'
END+' BETWEEN ''2002-01-01'' AND ''2009-05-01''
GROUP BY '+CASE @MyVar
WHEN 1 THEN 'convert(VARCHAR(10),a1,120)'
WHEN 2 THEN 'convert(VARCHAR(10),b2,120)'
END
-----------------------------
SELECT convert(VARCHAR(10),a1,120) AS dToday,Count(*) AS Nums
FROM A
WHERE convert(VARCHAR(10),a1,120) BETWEEN '2002-01-01' AND '2009-05-01'
GROUP BY convert(VARCHAR(10),a1,120)
汗,你把case when的功能看得太强大了