2015-03-13 79 views
0

我需要能够从2015年开始有100年的下拉列表。我已经找到SQL代码来执行此操作,但是我希望将字符不适用于没有一年的记录。我不想创建表格;我希望它是动态的。在SQL中填充包含'NA'的年份的下拉列表

下面

SQL(我发现这本网站上,顺便说一句)

DECLARE @yearStart int,@yearEnd int 
SET @yearStart=1915 
SET @yearEnd=2015; 

WITH mycte AS(SELECT @yearStart as myYear 
UNION ALL 
SELECT myYear+1 FROM mycte WHERE myYear<@yearEnd) 

SELECT * FROM mycte 
+0

所以你只是想在过去的100年里下降'NA'? – SouravA 2015-03-13 16:31:31

+0

为什么您需要执行select语句来填充包含过去100年数字的下拉列表?为什么你需要问它到数据库? – 2015-03-13 16:35:24

+0

不要为它执行select语句,只需使用Enumerable.Range和Enumberable.Concat。 – 2015-03-13 16:37:54

回答

1

我的猜测是,加入“NA”不应该在SQL完成,但如果你想,那么就UNION它上;

DECLARE @yearStart int,@yearEnd int 
SET @yearStart=1915 
SET @yearEnd=2015; 

WITH mycte AS(SELECT @yearStart as myYear 
UNION ALL 
SELECT myYear+1 FROM mycte WHERE myYear<@yearEnd) 

SELECT 'NA' as MyYear 
UNION ALL 
SELECT CAST(myYear AS VARCHAR(4)) FROM mycte 
+0

谢谢。这完美地工作 – trobinson16 2015-03-13 19:21:50

0

DECLARE @yearStart INT,@年底INT

SET @yearStart=1915 

SET @yearEnd=2015; 

WITH mycte AS(SELECT @yearStart as myYear 

UNION ALL 

SELECT myYear+1 FROM mycte WHERE myYear<@yearEnd) 


SELECT CAST(myYear as VARCHAR(4)) FROM mycte 
UNION ALL 
SELECT 'NA' 

可以将所有添加UNION,如果它在SQL处理,但在我看来,你应该在前端进行处理这一点。

+0

谢谢Sourav_Agasti,但我得到的消息'将转换varchar值'NA'转换为数据类型int'时转换失败。这是我在联盟时最初得到的。我现在有答案。再次感谢 – trobinson16 2015-03-13 19:23:02

+0

忘了演员。现在会工作。 – SouravA 2015-03-13 20:17:53