Sql 使用额外的标准在两行之间进行计算?
此问题是在MS Access 2003中的SQL中为查询完成的 所以我们的目标是减去凯特在同一年从西莉亚那里得到的礼物数量(但由于同一年有几个不同的现值,我们选择家庭>学校优先……例如,西莉亚和凯特都在2012年收到礼物,但西莉亚在2012年收到家庭礼物和学校礼物,在这种情况下,我们选择她的家庭现值进行计算)输出应该如下所示:Sql 使用额外的标准在两行之间进行计算?,sql,ms-access,Sql,Ms Access,此问题是在MS Access 2003中的SQL中为查询完成的 所以我们的目标是减去凯特在同一年从西莉亚那里得到的礼物数量(但由于同一年有几个不同的现值,我们选择家庭>学校优先……例如,西莉亚和凯特都在2012年收到礼物,但西莉亚在2012年收到家庭礼物和学校礼物,在这种情况下,我们选择她的家庭现值进行计算)输出应该如下所示: Name ExactDate Presents Location bob1 2011 1 home
Name ExactDate Presents Location
bob1 2011 1 home
bob2 2008 2 school
bob2 2012 3 school
mary2 1986 4 school
mary1 2001 5 home
mary1 2012 6 home
kate1 2011 7 home
kate1 2012 8 home
kate2 2011 9 school
celia2 2011 10 school
celia2 1986 11 school
celia1 1972 12 home
celia1 2012 14 home
celia2 2012 13 school
到目前为止,我已经:
Name ExactDate PresentsDiff
celiaminuskate 2011 3
celiaminuskate 2012 6
我认为需要修复的部分
SELECT 'celiaminuskate'AS [NAME],T1.[date] AS [EXACT DATE],
T1.presents T2.presents AS [PRESENTS DIFF]
FROM Some_Table T1, Some_Table T2
表示优先级?我不太确定怎么做
WHERE (T1.Name = 'celia1'>'celia2')
AND (T2.Name = 'kate1'>'kate2')
AND T2.ExactDate = T1.ExactDate
我创建了这个查询并将其保存为qrycelia和kategiftdates。它只返回西莉亚和凯特都记录过的不同的ExactDate值 请注意,我将“您的姓名”字段重新命名为“收件人”,因为“姓名”是一个保留字
ORDER BY T1.ExactDate
然后,我使用相关子查询在每个精确日期为celia和kate返回正确的Presents值
SELECT DISTINCT celia.ExactDate
FROM
[SELECT ExactDate
FROM Some_Table
WHERE Recipient Like "celia*"
]. AS celia
INNER JOIN [
SELECT ExactDate
FROM Some_Table
WHERE Recipient Like "kate*"
]. AS kate
ON celia.ExactDate = kate.ExactDate
ORDER BY celia.ExactDate;
它返回您从Access 2003运行时请求的结果。但是相关子查询的速度非常慢,因此我很想看看您还得到了哪些其他答案。我创建了此查询,并将其保存为qrycelia和kategiftdates。它只返回celia和kate都记录过的不同的ExactDate值 请注意,我将“您的姓名”字段重新命名为“收件人”,因为“姓名”是一个保留字
ORDER BY T1.ExactDate
然后,我使用相关子查询在每个精确日期为celia和kate返回正确的Presents值
SELECT DISTINCT celia.ExactDate
FROM
[SELECT ExactDate
FROM Some_Table
WHERE Recipient Like "celia*"
]. AS celia
INNER JOIN [
SELECT ExactDate
FROM Some_Table
WHERE Recipient Like "kate*"
]. AS kate
ON celia.ExactDate = kate.ExactDate
ORDER BY celia.ExactDate;
当从Access 2003运行时,它返回您请求的结果。但是相关子查询的速度非常慢,所以我很想看看您还得到了什么其他答案。如果这是作业,它可能会重复,应该标记为作业。这是同一问题的另一个副本:嘿,这是我的问题,但现在有一个额外的问题“标准"更重要的是,这使它变得更加困难。这不是家庭作业。这是工作。这就像我在工作中必须做的一样,因为我更改了所有的值和实际数据,因为保密性,但实际的查询将工作相同。谢谢我在工作中做数据管理。但我是一名学生,还在上学。是的,我是sql和acces的初学者有很多东西要学。我在谷歌上评论说,如果这是作业,它可能会被标记为作业。这是同一个问题的另一个副本:嘿,这是我的问题,但现在有一个额外的“标准”更重要的是,这使它变得更加困难。这不是家庭作业。这是工作。这就像我在工作中必须做的一样,因为我更改了所有的值和实际数据,因为保密性,但实际的查询将工作相同。谢谢我在工作中做数据管理。但我是一名学生,还在上学。是的,我是sql和acces的初学者我想知道你知道怎么用“-”来减法。那么你也可以用“+”来加吗?我试过用“+”来代替把这些值加在一起,结果是123+0.28=1230.28,这可能和文本格式的数字有什么关系吗?但我从来没有改变过我使用的格式“-”这就行了。谢谢你。这一切都很好,因为你已经知道了。哈哈,谢谢你,但是agian=)……我需要停止打字了……嘿,我想知道你怎么用“-”来减法。那么你也能用“?”+”他补充道?我试过了,没有把这些值加在一起,而是123+0.28=1230.28,这和文本格式的数字有什么关系吗?但我从来没有改变过使用“-”时的格式,这很有效。谢谢你,这一切都很好,因为你已经知道了,哈哈,谢谢你,再见。。。。我得停止打字了。。。