如何从1条记录中获取多条记录

时间:2011-04-14 19:42:01

标签: sql sql-server sql-server-2005

我有一个包含ItemID (primary),Name ,UPC,Price,Cost, etc.

等15个字段的产品表

现在我需要打印用户可以说的标签

  • 来自项目“ABC”我需要15个标签
  • 来自项目'XYZ'我需要10个标签

我需要一个SQL语句,我将发送ItemID和每条记录的标签数量,它应该为每个标签返回一条记录,例如项目“ABC”的15条记录和项目“XYZ”的10条记录,等等

3 个答案:

答案 0 :(得分:1)

SELECT <fields>
FROM Mytable
Where Item = 'ABC'
GO 10

将在10个结果集中连续10次从该表中选择这些字段。

实际上,听起来你需要在SQL中做你想做的事情,但是在你的调用应用程序中。

答案 1 :(得分:1)

我同意这应该在客户端进行,但如果你坚持,则每次记录重复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

答案 2 :(得分:0)

您可以在下面创建动态表别名为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