2015-03-13 73 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