3

CreatedDateSQLテーブルにDateTime型の列があり、SSRS2008を使用してレポートを作成しました。

レポートのテーブルをこれでグループ化しましたCreatedDate

CreatedDateこれで。の形式で注文する必要がありますdd/MM/yyyy

この列の値を次Convert(varchar(10),CreateDate,101)の形式で値を取得し、MM/dd/yyyyデータを正しく並べ替えているように変換すると、次のようになります。

03/03/2012
03/05/2012
05/03/2012

Convert(varchar(10),CreatedDate,103)の形式で値を取得しているのと同じように列を変換すると、次のdd/MM/yyyyように並べ替えられます。

03/03/2012
04/05/2012
05/03/2012

しかし、私はテーブルを次のようにグループ化する必要があります

03/03/2012
05/03/2012
04/05/2012

このように、このために私は手動でタブリックスのソート機能を与えてみました

=Format(Fields!CreatedDate.value,"dd/MM/yyyy")

しかし、それは機能していません、どうすればこれを修正できますか....誰かがここで私を助けてくれますか...

ここで使用しているクエリは

SELECT ItemName
       , COUNT(ItemName) AS Quantity
       , SUM(LineTotal) AS Amount
       , CONVERT(varchar(10), CreatedDate, 103) AS CreatedDate
FROM StudentFeesItems
WHERE (CONVERT(varchar(10), CreatedDate, 101) BETWEEN @StartDate AND @EndDate)
GROUP BY ItemName, CreatedDate
4

3 に答える 3

2

データセットのこれら2つの形式に日付を追加してから、次のいずれかで並べ替えることができます。

SELECT [YourColumns], Convert(varchar(8),CreateDate,112) SortDate,
       Convert(varchar(10),CreatedDate,103) Displaydate
FROM YourTable

このようにDisplayDateして、Tablixで使用し、手動で並べ替えることができますSortDate

于 2012-05-17T13:43:38.433 に答える
2

日付を文字列に変換しないでください。それらを日付として保持し、日付として並べ替えます。

すでに経験したように、文字列をフォーマットしない限り、必要なYYYY-MM-DD順序が得られません。日付を DATETIME データ型として保持する場合は、日付で並べ替え、グループ化し、フォーマットして、好きなように処理できます。

DATEADD(DAY, DATEDIFF(DAY, 0, CreateDate), 0) AS roundedDate


再編集

これがあなたのクエリでの私の提案です...

WITH
  main_query
AS
(
  SELECT
    ItemName,
    DATEADD(DAY, DATEDIFF(DAY, 0, CreatedDate), 0) AS CreatedDate,
    COUNT(ItemName) AS Quantity,
    SUM(LineTotal) AS Amount
  FROM
    StudentFeesItems
  WHERE
        CreatedDate >= @StartDate
    AND CreatedDate <  DATEADD(DAY, 1, @EndDate)
  GROUP BY
    ItemName,
    DATEADD(DAY, DATEDIFF(DAY, 0, CreatedDate), 0)
)
SELECT
  ItemName,
  Convert(varchar(10), CreatedDate, 103)    AS formattedDate,
  Quantity,
  Amount
FROM
  main_query
ORDER BY
  ItemName,
  CreatedDate

注:
- フィールドで関数を呼び出してフィルター処理
しないでください - 文字列操作を使用して日時を日付に丸めないで
ください - 日付の文字列表現で並べ替えないでください

于 2012-05-17T14:05:28.100 に答える
2

SQLクエリにaを追加しROW_NUMBER() over (order by CreatedDate) as myOrder てmyOrderで注文するのはどうですか?

編集:

=Format(Fields!date.Value,"dd/MM/yyyy")
于 2012-05-17T14:09:21.717 に答える