create table #sample (
product varchar(100),
Price float
)
insert into #sample values ('Pen',10)
insert into #sample values ('DVD',29)
insert into #sample values ('Pendrive',45)
insert into #sample values ('Mouse',12.5)
insert into #sample values ('TV',49)
select * from #sample
考虑这种情况…
我有1000美元,我想购买上面列出的东西。
我想花全部钱
因此,我需要一个查询,该查询将给出所有产品中多少单位的价格为1000 $
有什么帮助吗?
这是硬编码的,几乎没有灵活性。我的系统花了2分钟才能运行。但是可能会有所帮助,如果没有,抱歉。fnGenerate_Numbers是一个表函数,它返回参数范围内的整数。
做到这一点的方法。
DECLARE @Max INT,
@Pens money,
@Dvds money,
@Pendrives money,
@Mouses money,
@Tvs money
SELECT @Max = 1000,
@Pens = 10,
@Dvds = 29,
@Pendrives = 45,
@Mouses = 12.5,
@Tvs = 49
;WITH Results AS
(
SELECT p.n pens, d.n dvds, pd.n pendrives, m.n mouses, t.n tvs, tot.cost
FROM fnGenerate_Numbers(0, @Max/@Pens) p -- Pens
CROSS JOIN fnGenerate_Numbers(0, @Max/@Dvds) d -- DVDs
CROSS JOIN fnGenerate_Numbers(0, @Max/@Pendrives) pd -- Pendrives
CROSS JOIN fnGenerate_Numbers(0, @Max/@Mouses) m -- Mouses
CROSS JOIN fnGenerate_Numbers(0, @Max/@Tvs) t -- Tvs
CROSS APPLY (SELECT p.n * @Pens + d.n * @Dvds + pd.n * + @Pendrives + m.n * @Mouses + t.n * @Tvs cost) tot
WHERE tot.cost < @Max
), MaxResults AS
(
SELECT
MAX(pens) pens,
dvds,
pendrives,
mouses,
tvs
FROM Results
GROUP BY
dvds,
pendrives,
mouses,
tvs
)
SELECT mr.*, r.cost FROM MaxResults mr
INNER JOIN Results r ON mr.pens = r.pens
AND mr.dvds = r.dvds
AND mr.pendrives = r.pendrives
AND mr.mouses = r.mouses
AND mr.tvs = r.tvs
ORDER BY cost
我似乎无法让这段代码发挥作用。我所做的是用2位数字的所有可能组合填充一个数组(每个数字分别代表一个形状和颜色)。然后,我尝试使用这个数组来填充一个2d数组,在其中我创建了前一个数组中包含的元素的所有可能的组合。出于某种原因,我的2d数组中填充了所有的“21”,而不是任何类型的组合。 如果需要的话,我可以把剩下的代码放在类中,但是它太长了。这个方法中的最后一个循环只是用来打印它们以供测试,之后会被删
我有这张桌子: 这是我的SQL查询: 我想要的查询是: > 我希望获得符合某些条件的记录,特别是字段在最近24小时内的记录 我需要获得紧接在#1中的记录之前的记录 将#1中的结果进一步过滤到其价格列在记录的历史记录中具有不同值(而不是-1)的记录 我面临的问题是查询太慢了。我有一百万张唱片。执行查询大约需要2分钟。我猜GROUP BY会使查询变慢。我想我需要做一个综合指数,但我不知道怎么做。 解释
问题内容: 假设我有以下表格: 标签 id:整数 名称:字符串 帖子 id:整数 正文:文本 标记 id:整数 tag_id:整数 post_id:整数 我将如何编写一个查询来选择所有带有以下所有标记(标记表的名称属性)的标记的查询:“奶酪”,“葡萄酒”,“巴黎”,“宽限期”,“城市”,“风景区”,“艺术” 另请参阅:需要有关SQL查询的帮助以查找带有大多数指定标签的内容(注意:相似,但不能重复!
主要内容:带有 SELECT 语句的子查询,带有 INSERT 语句的子查询,带有 UPDATE 语句的子查询,带有 DELETE 语句的子查询子查询与其他 SQL Server 查询一起使用并嵌入 WHERE 子句。子查询用于返回数据,在主问题中用作限制要检索的数据的条件。 子查询与语句 SELECT、INSERT、UPDATE 和 DELETE 一起使用,并带有运算符 、、、、、 和 等。 子查询遵循的规则很少 - 子查询括在括号中。 子查询包括 FROM 子句和 SELECT 子句。 子查
问题内容: 好吧,我可能也已在较早之前发布了此内容,但到目前为止仍找不到答案,因此请帮助我解决这个问题。 我的数据库结构: ATT (表) Act_ID(PK) Assigned_To_ID(FK,请参阅) Project_ID(FK,请参阅) Product_ID(FK,请参阅) 状态(可以是) 产品表 产品编号(PK) 产品名称 项目表 Project_ID(PK) 项目名 员工表 Emp_I
问题内容: 我们如何在T-SQL中编写递归SQL查询?您能举一个这样的递归sql查询的简单例子吗? 问题答案: