как получить несколько записей из 1 записи - PullRequest
0 голосов
/ 14 апреля 2011

У меня есть таблица продуктов с 15 полями, такими как ItemID (primary),Name ,UPC,Price,Cost, etc.

Теперь мне нужно распечатать этикетки, которые пользователь может сказать

  • из элемента "ABC", мне нужно 15 этикеток
  • из элемента «XYZ» Мне нужно 10 меток

Мне нужен оператор SQL, который я отправлю ItemID и метку Qty для каждой записи, и он должен вернуть меня для каждой меткинапример, 15 записей для элемента «ABC» и 10 записей для элемента «XYZ» и т. д.

Ответы [ 3 ]

1 голос
/ 14 апреля 2011

Я согласен, что это должно быть сделано на клиенте, но если вы настаиваете, следуйте дубликатам каждой записи 100 раз и выберите из нее нужную сумму.

;WITH ATable AS (
  SELECT Item = 'ABC'
  UNION ALL SELECT Item = 'XYZ'
)
, Temp (Item, Amount) AS (
  SELECT 'ABC', 15
  UNION ALL SELECT 'XYZ', 10
)
, q AS (
  SELECT  ID = 1
          , Item
  FROM    ATable
  UNION ALL
  SELECT  ID = q.ID +1
          , q.Item
  FROM    q
  WHERE   ID < 100         
)
SELECT  q.*
FROM    q
        INNER JOIN Temp t ON t.Item = q.Item
                             AND t.Amount >= q.ID
1 голос
/ 14 апреля 2011
SELECT <fields>
FROM Mytable
Where Item = 'ABC'
GO 10

Выбирает эти поля из этой таблицы 10 раз подряд в 10 наборах результатов.

Действительно, звучит так, будто вам нужно делать то, что вы пытаетесь сделать не в SQL, а в вызывающем приложении.

0 голосов
/ 15 апреля 2011

Вы создаете динамическую таблицу с псевдонимом как r ниже. Работает на сумму до 2047 года.

select t.*
from 
 (select label='ABC', required=15 union all
  select label='XYZ', required=10) r
inner join tbl t
    on t.ItemID = r.label
inner join master..spt_values v
    on v.type=Number and v.number between 1 and r.required
order by t.ItemID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...