2

いくつかの可変販売センターについて、毎月の販売操作の数を抽出しようとしています。次の TSQL を使用して...

;WITH Months(m) AS
(
    SELECT 1 m
    UNION ALL 
    SELECT m+1 FROM Months WHERE m < 12
)
SELECT  t.Center,m Month, t.Sales FROM Months
CROSS APPLY 
(
    SELECT C.Center, COUNT(1) Sales FROM Operations C
    LEFT JOIN Centers A ON A.Code=C.Center
    WHERE Date BETWEEN '01/'+ CONVERT(VARCHAR(2),Months.m) + '/2013' AND DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,'01/'+ CONVERT(VARCHAR(2),Months.m) + '/2013')+1,0))
    GROUP BY C.Center
) t

したがって、次の出力が得られます。

Center   Month   Sales
-----------------------
A        1       20
B        1       30
A        2       25
B        2       30
....

そして、私が終わらせたいのは:

Center   1    2    ...
----------------------
A        20   25   ...
B        30   30   ...

xmlpathでpivotを勉強しているのですが、複雑すぎてうまくいきません。誰にも解決策がありますか?

4

3 に答える 3

0

やらないでください。なぜ Sql Server と戦って、意図されていないことをするのですか?

今と同じように、クエリが垂直方向にデータを返すようにします。

アプリケーションレベルで転置します。
間違いなくポップアップする特別なビジネスルールの作成、デバッグ、保守、および処理がはるかに簡単になります。

また、トラブルシューティングやピボットのためにデータを Excel に簡単に貼り付けることができます。

于 2013-08-03T19:26:29.797 に答える