0

日付フィールドを含むテーブルがあり、月と年 (2 つの別々の列) に変換されます。並べ替えができません

Month    Year
12        2011
11        2011
2         2012
1         2012

クエリを書くと。それは次のように与えます

  Month       Year
   1          2012
   2          2012
   11         2011
   12         2011

ただし、以下のようにする必要があります

  Month          Year
   11         2011
   12         2011
    1         2012
    2         2012

ここでは月ごとにグループ化します。日付フィールドを表示したくありません

助けてください

4

2 に答える 2

2

これはあなたができることです:

;WITH CTE
AS
(
    SELECT *,
    ROW_NUMBER() OVER ( PARTITION BY YEAR ORDER BY MONTH) RN
FROM YourTable
)

SELECT * FROM CTE  
ORDER BY YEAR, RN

SQL フィドルのデモ

実際には、もう 1 つの率直な方法として、

SELECT * FROM YourTable
ORDER BY YEAR, MONTH
于 2013-03-08T07:18:23.443 に答える
2
select datepart(month, DateCol) as [Month],
       datepart(year, DateCol) as [Year]
from YourTable
order by [Year], [Month]

SQL フィドル

また、月ごとにグループ化したい場合は

select datepart(month, DateCol) as [Month],
       datepart(year, DateCol) as [Year]
from YourTable
group by datepart(month, DateCol),
         datepart(year, DateCol)
order by [Year], [Month]

SQL フィドル

于 2013-03-08T07:12:08.493 に答える