3

この問題を解決するために丸 2 日を費やしました。今、私は頭がおかしくなっています。緊急の助けが必要です。問題は、テーブルに行かなければならないことです。

表: Sales、SalesIdprimary key

---------------------------------------------------
SalesId | SalesDate | Customer| Discount | Remarks
---------------------------------------------------
1       | 01/01/2012|   John  |   15     |   NULL
2       | 01/01/2012|   Peter |   25     |   NULL
3       | 01/01/2012| Micheal |   35     |   NULL

表: SalesBody 、SerialNoSalesIdprimary keyforeign key

---------------------------------------------------
SerialNo | SalesId | Product | Quantity | Rate
---------------------------------------------------
10       | 1       | Pencil   | 18       | 20
11       | 1       | pen      | 200      | 60
12       | 1       | Rubber   | 150      | 10
13       | 1       | Paper    | 500      | 2
14       | 2       | Mouse    | 15       | 190
15       | 2       | KeyBoard | 10       | 600
16       | 2       | Monitor  | 5        | 2000
17       | 3       | Mobile   | 2        | 15000

今、次のような結果を得ることができるクエリを作成したい

----------------------------------------------------------------------------
SalesId | SalesDate  | Details                               | Amount
----------------------------------------------------------------------------
1       | 01/01/2012 | Sold: Pencil x 18 @ 20, Pen x 200 @ 60| xxxxxxx
        |            |  Rubber x 150 @ 10, Paper x 500 @ 2   |
2       | 01/01/2012 | Sold: Mouse x 15 @ 190, Keyboard x 10 |
        |            |  @ 600, Monitor x 5 @ 2000            | xxxxxxx
3       | 01/01/2012 | Sold: Mobile x 2 @ 15000              | xxxxxxx

私はさまざまなテクニックを試しました。合体、スタッフ、XML PATH('') 用

詳細文字列を連結できませんでした。

4

1 に答える 1

6

私が見る限り、SalesBody テーブルをピボットして、SalesID でグループ化するだけです。

以下のクエリの行に沿った何かがうまくいくはずです

select sb.SalesId, ( SELECT ', ' + sb2.Product + ' x ' + sb2.Quantity + ' @ ' + sb2.Rate
       FROM SalesBody sb2
       WHERE sb2.SalesId = sb.SalesId 
       FOR XML PATH('') ) AS Details
from SalesBody sb
group by sb.SalesId 

次に、そのクエリを Sales テーブルに結合して他のデータを取得し、上記のクエリの Details に対して STUFF コマンドを実行して、先頭の "," を削除し、"sold: " 文字列を追加します。

于 2013-01-28T12:17:23.850 に答える