2016-04-06 24 views
-6

今月から始まる年の月をリストするには、SQLクエリが必要です。 私はこのクエリを試しましたが、私は現在の月がリストの最初に必要です。現在の月から月のリストを取得するSQLクエリ

DECLARE @year int 
SET @year = 2016 
SELECT number AS a, 
    DATENAME(MONTH, cast(@year*100+number AS varchar) + '01') AS b 
    FROM master.dbo.spt_values 
    WHERE TYPE = 'P' 
    AND number BETWEEN 1 AND 12 

はあなたにこのクエリで

+1

親切にあなたがしようとしているクエリを投稿してください。 –

+1

データベースを指定してください。 – Harry

+3

あなたはどのRDMBSを使用していますか? – MusicLovingIndianGirl

答えて

0

を見ていただきありがとうございます。 それはデモンストレーションのためだけだ、

DECLARE @YEAR INT 
SET @YEAR = (SELECT YEAR(GETDATE())) 
DECLARE @MONTH INT 
SET @MONTH = (SELECT MONTH(GETDATE())) 

DECLARE @DT TABLE(ID INT, MONTHNAME NVARCHAR(20)) 

INSERT INTO @DT SELECT NUMBER AS ID, 
    DATENAME(MONTH, CAST(@YEAR*100+NUMBER AS VARCHAR) + '01') AS MONTHNAME 
FROM MASTER.DBO.SPT_VALUES 
WHERE TYPE = 'P' AND 
    NUMBER BETWEEN @MONTH AND 12 

INSERT INTO @DT SELECT NUMBER AS ID, 
    DATENAME(MONTH, CAST(@YEAR*100+NUMBER AS VARCHAR) + '01') AS MONTHNAME 

FROM MASTER.DBO.SPT_VALUES 
WHERE TYPE = 'P' AND 
    NUMBER BETWEEN 1 AND @MONTH -1 

SELECT * FROM @DT 
+0

引数を渡すことはできませんが、それは私の要求 – Sara

+0

を満たしていないので、あなたは@monthを動的にすることができます。 – Bharat

+0

更新されたコードを見てください。 – Bharat

0

は、これは簡単に再帰CTEを使用して解決することができます。

;WITH CTE AS 
(
    SELECT GETDATE() As TheDate, 
      DATENAME(MONTH, GETDATE()) As TheMonth 
    UNION ALL 
    SELECT DATEADD(MONTH, 1, TheDate), 
      DATENAME(MONTH, DATEADD(MONTH, 1, TheDate)) 
    FROM CTE 
    WHERE YEAR(DATEADD(MONTH, 1, TheDate)) = YEAR(GETDATE()) 
) 

SELECT TheMonth 
FROM CTE 
関連する問題