人口情報を示すテーブル DemographicDetails があります。フィールドは
- ID - 一意の ID フィールド (自動インクリメント)
- 人口 - 整数
- SurveyDate - 日時フィールド
- City - 都市を示す varchar フィールド
- 状態 - varchar
- 地域 - 南/北
- 国
人口の詳細を以下の形式で表示するレポートが必要です
India Current Yr Figure PreviousYr Figure
State_1 X,XX,XX,XXX XX,XX,XXX
State_2 X,XX,XX,XXX XX,XX,XXX
State_3 X,XX,XX,XXX XX,XX,XXX
以下のクエリで試しました:
WITH cte AS (
SELECT TOP (99.99) PERCENT
Population, City, State, SurveyDate, Region, Country,
CASE WHEN (DATEPART(yyyy, surveydate) = DATEPART(yyyy, GETDATE()))THEN 'CurrentYear' ELSE NULL END AS CurrentYear,
CASE WHEN (DATEPART(yyyy, surveydate) <> DATEPART(yyyy, GETDATE())) THEN 'LastYear' ELSE NULL END AS LastYear
FROM DemographicDetails
ORDER BY City)
SELECT Population, City, State, Region, Country, SurveyDate,
CurrentYear, LastYear, COALESCE (CurrentYear, LastYear) AS DateStatus
FROM cte AS cte_1
レポートのテキストボックスには、次の式を指定しました。
iif(Fields!DateStatus.Value="CurrentYear",Fields!Population.Value,0)
最初のテキスト ボックスと 2 番目のボックスの式は次のとおりです。
iif(Fields!DateStatus.Value="LastYear",Fields!Population.Value,0)
ただし、私の結果は次のようになります。
India Current Yr Figure PreviousYr Figure
State_1 value1 0
State_1 0 value2
State_2 value3 0
State_3 value4 0
しかし、次のように必要です。
India Current Yr Figure PreviousYr Figure
State_1 value1 value2
State_2 value3 0
State_3 value4 0
つまり、同じ行の state_1 value1 と value2 の場合です。