0

3 月から 2 月、または 2 月から 1 月のように特定の順序で月を選択するには、クエリを作成する必要があります。ストアド プロシージャは使用できません。私はSELECTを使用する必要があり、データベースには月の名前が「1月」、「2月」、「3月」などのように保存されています...

月を取得するときは、最初の 3 文字だけが必要です。

結果は

jan 1
feb 2
mar 3
apr 4
may 5
jun 6
jul 7
aug 8
sep 9
oct 10
nov 11
dec 12

このクエリを使用した後

Select distinct upper(convert(varchar(3),datename(MONTH,InvoiceDate))) as monthName,upper(convert(nvarchar,datepart(mm,InvoiceDate))) as 
    mon  
from OpenInvoiceDetails 
order by mon

私は得る

jan 1
oct 10
nov 11
dec 12
feb 2
mar 3
apr 4
may 5
jun 6
jul 7
aug 8
sep 9
4

4 に答える 4

0

私はここで多くの仮定をしていますが、このようなものはうまくいくでしょう:

    Create Table Months
(
    DateColumn varchar(20)
)

INSERT INTO Months

SELECT 'January' 
UNION
SELECT 'February'
UNION
SELECT 'March'
UNION
SELECT 'April'
UNION
SELECT'May' 
UNION
SELECT 'June' 
UNION
SELECT 'July' 
UNION
SELECT 'August'
UNION
SELECT 'September'
UNION
 SELECT'October' 
UNION
SELECT 'November'
UNION
SELECT 'December'

SELECT  DateColumn ,( CASE DateColumn
            WHEN 'January' THEN 1
            WHEN 'February' THEN 2
            WHEN 'March' THEN 3
            WHEN 'April' THEN 4
            WHEN 'May' THEN 5
            WHEN 'June' THEN 6
            WHEN 'July' THEN 7
            WHEN 'August' THEN 8
            WHEN 'September' THEN 9
            WHEN 'October' THEN 10
            WHEN 'November' THEN 11
            WHEN 'December' THEN 12
          END ) as [Month]
From Months
Order by Month

あなたにこれを与えます:

January 1
February    2
March   3
April   4
May 5
June    6
July    7
August  8
September   9
October 10
November    11
December    12

月ごとの注文説明:

December    12
November    11
October 10
September   9
August  8
July    7
June    6
May 5
April   4
March   3
February    2
January 1
于 2013-01-31T06:30:02.297 に答える
0

これは最適ではありませんが、無効な列名を解決する必要があります。

Select distinct upper(convert(varchar(3),datename(MONTH,InvoiceDate))) as monthName
,upper(convert(nvarchar,datepart(mm,InvoiceDate))) as mon 
from 
 OpenInvoiceDetails 
order by Len(convert(nvarchar,datepart(mm,InvoiceDate))),
convert(nvarchar,datepart(mm,InvoiceDate))
于 2013-01-31T06:34:21.773 に答える
0

1 つのオプションは、次のように変更することORDER BYです。

ORDER BY Cast(mon as int) 

幸運を。

于 2013-01-31T06:37:03.497 に答える
0

このクエリを使用してみてください

    Select distinct
    upper(convert(varchar(3),datename(MONTH,daterecieved))) as monthName,
    datepart(mm,daterecieved)  as mon 
    from Donations 
    order by mon

    Select distinct
    upper(convert(varchar(3),datename(MONTH,InvoiceDate))) as monthName,
    Cast(upper(convert(nvarchar,datepart(mm,InvoiceDate)))  as int) as mon 
    from OpenInvoiceDetails 
    order by Cast(upper(convert(nvarchar,datepart(mm,daterecieved)))  as int)
于 2013-01-31T06:37:42.547 に答える