1

Crystal Reports に XML データセットとして渡すことができる SQL ビューを作成する必要があります。

数量に基づいてレコード (製品アイテム) を複製する必要があります。

例:

| Product ID | Product Name | Quantity
-----------------------------------------
    0001        Product 1        5
    0002        Product 2        3

これになります:

| Product ID | Product Name | Quantity
-----------------------------------------
    0001        Product 1        5
    0001        Product 1        5
    0001        Product 1        5
    0001        Product 1        5
    0001        Product 1        5
    0002        Product 2        3
    0002        Product 2        3
    0002        Product 2        3

数量に基づいて SQL を使用してレコードを複製するにはどうすればよいですか?

4

2 に答える 2

3

以下は、再帰的な共通テーブル式に基づくソリューションです。

WITH CTE(ProductID, RowIndex) AS
    (
        SELECT
            ProductID
            ,Quantity AS RowIndex
        FROM [TableName]
        WHERE Quantity > 0
        UNION ALL
        SELECT
            ProductID
            ,RowIndex - 1
        FROM CTE
        WHERE RowIndex - 1 > 0
    )

SELECT Tbl1.*
FROM [TableName] AS Tbl1
INNER JOIN CTE AS Tbl2
    ON Tbl1.ProductID = Tbl2.ProductID
ORDER BY Tbl1.ProductID

TableName上記のコードを使用するには、 をテーブルの名前に置き換えるだけです。

試験台

| ProductID | ProductName | Quantity |
--------------------------------------
    0001       Product 1        5
    0002       Product 2        3
    0003       Product 3        2
    0004       Product 4        0

コード実行後の結果

| ProductID | ProductName | Quantity |
--------------------------------------
    0001       Product 1        5
    0001       Product 1        5
    0001       Product 1        5
    0001       Product 1        5
    0001       Product 1        5
    0002       Product 2        3
    0002       Product 2        3
    0002       Product 2        3
    0003       Product 3        2
    0003       Product 3        2
于 2013-07-15T18:22:58.330 に答える
-1

SELECT item.* FROM ( SELECT LEVEL l FROM DUAL CONNECT BY LEVEL <= maximum_number) data, item WHERE data.l <= item.quantity ORDER BY item.id

于 2013-07-15T15:00:43.480 に答える