Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用额外的标准在两行之间进行计算?_Sql_Ms Access - Fatal编程技术网

Sql 使用额外的标准在两行之间进行计算?

Sql 使用额外的标准在两行之间进行计算?,sql,ms-access,Sql,Ms Access,此问题是在MS Access 2003中的SQL中为查询完成的 所以我们的目标是减去凯特在同一年从西莉亚那里得到的礼物数量(但由于同一年有几个不同的现值,我们选择家庭>学校优先……例如,西莉亚和凯特都在2012年收到礼物,但西莉亚在2012年收到家庭礼物和学校礼物,在这种情况下,我们选择她的家庭现值进行计算)输出应该如下所示: Name ExactDate Presents Location bob1 2011 1 home

此问题是在MS Access 2003中的SQL中为查询完成的

所以我们的目标是减去凯特在同一年从西莉亚那里得到的礼物数量(但由于同一年有几个不同的现值,我们选择家庭>学校优先……例如,西莉亚和凯特都在2012年收到礼物,但西莉亚在2012年收到家庭礼物和学校礼物,在这种情况下,我们选择她的家庭现值进行计算)输出应该如下所示:

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,这和文本格式的数字有什么关系吗?但我从来没有改变过使用“-”时的格式,这很有效。谢谢你,这一切都很好,因为你已经知道了,哈哈,谢谢你,再见。。。。我得停止打字了。。。