目標に近づくのに役立つ質問/回答が見つかりません。SQL Fiddleに次のテーブルチェック コードがあります。
SITENAME RTYPE SEASON CTRSTAT CTRTYPE UNITS STARTDATE WKTYPE INVSTAT
site1 T2B P null null 92 null FRSA_P Unsold
site1 T2B Pre null null 36 null FRSA_P Unsold
site1 T2B PRI null null 173 null FRSA_P Unsold
site1 T2B SPE null null 56 null FRSA_P Unsold
site1 T2B P Complete FRSA 2 2013-01-01 FRSA_P Sold
site1 T2B Pre Complete FRSA 2 2013-01-01 FRSA_P Sold
site1 T2B PRI Complete FRSA 2 2013-01-01 FRSA_P Sold
site1 T2B P Complete FRSA 1 2013-03-05 FRSA_P Sold
site1 T2B P Complete FRSA 3 2014-01-01 FRSA_P Sold
site1 T2B Pre Complete FRSA 4 2014-01-01 FRSA_P Sold
site1 T3B P null null 69 null FRSA_P Unsold
site1 T3B Pre null null 26 null FRSA_P Unsold
site1 T3B PRI null null 125 null FRSA_P Unsold
site1 T3B SPE null null 40 null FRSA_P Unsold
site1 T3B Pre Complete FRSA 2 2013-01-01 FRSA_P Sold
site1 T3B P Complete FRSA 1 2014-01-01 FRSA_P Sold
site1 T3B Pre Complete FRSA 2 2014-01-01 FRSA_P Sold
その後、どういうわけか、次の図のようなレポートにたどり着きます。InvStatus が未販売の場合、レポートは Unsold を返し、それ以外の場合は CTRSTAT を返します。
合計と総計には注意しないでください。画像は他のデータを使用した Excel からのものです。必要な結果のサンプルを取得するだけです。
編集:日付の列は 1 年に対応するため、たとえば、列に2013-03-05
属するものがあり01/01/2013
ます。日付が null の場合は、最後に表示された年に移動しますが、この場合01/01/2014
は 2015 年になる可能性があります。
さまざまなタイプとGROUP BY
一緒に使用して、いくつかの異なるアプローチを試しましたが、どれもうまくいきませんでした。役に立たないか、少なくとも正しい結果を得ることができませんでした。少なくとも簡単な方法では、おそらく不可能です。GROUPING
SETS
CUBE
ROLLUP
これは、私が試した多くのクエリの 1 つのサンプルです。レポートのようなものを取得するためにひねりを加えようとしましたが、まだ近いものはありません。
SELECT
sitename, rtype, season, ctrstat, ctrtype, SUM(units)
,startdate, invstat
FROM tt
GROUP BY
GROUPING SETS ((sitename,InvStat,ctrstat)
,(RType,ctrtype,season,startdate)
,()
)
編集:このタスクには SSRS を使用したほうがよいでしょうか?