Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 server SQL Server如何将两个查询相乘_Sql Server_Database_Multiplication_Select Query - Fatal编程技术网

Sql server SQL Server如何将两个查询相乘

Sql server SQL Server如何将两个查询相乘,sql-server,database,multiplication,select-query,Sql Server,Database,Multiplication,Select Query,因此,我有两个不同的问题,如下所示: Query1 CPT Resource 1 2 3 4 5 2017-06-12 RM1 5.00 5.00 4.00 4.00 2.00 2017-06-12 RM2 3.00 6.00 4.00 7.00 4.00 2017-06-12 RM3 3.00 4.00 6.00 8.00 6.

因此,我有两个不同的问题,如下所示:

Query1
CPT        Resource     1      2        3      4      5
2017-06-12  RM1        5.00   5.00    4.00   4.00   2.00
2017-06-12  RM2        3.00   6.00    4.00   7.00   4.00
2017-06-12  RM3        3.00   4.00    6.00   8.00   6.00
2017-06-13  RM1        3.00   7.00    5.00   3.00   5.00
2017-06-13  RM2        4.00   5.00    4.00   2.00   4.00
2017-06-13  RM3        2.00   4.00    5.00   2.00   7.00
2017-06-14  RM1        2.00   4.00    6.00   4.00   2.00
2017-06-14  RM2        6.00   5.00    4.00   5.00   2.00
2017-06-14  RM3        5.00   3.00    7.00   4.00   5.00

通过这两个查询,我将如何创建一个新的查询,将查询1中的数据与查询2中的相应数字相乘,该数字基于日期、资源和小时(标题1、2、3、4和5)位于相同位置。我也只想要正数,所以新数据应该乘以-1

如果我手工操作,新表应如下所示:

Query3
    CPT        Resource     1      2        3      4      5
    2017-06-12  RM1        0.00  10.00    0.00   0.00   4.00
    2017-06-12  RM2        9.00  18.00    0.00   0.00   0.00
    2017-06-12  RM3        3.00  12.00    0.00   0.00   0.00
    2017-06-13  RM1        0.00   7.00    0.00   0.00   0.00
    2017-06-13  RM2        0.00   5.00    4.00   4.00   8.00
    2017-06-13  RM3        4.00  12.00    5.00   0.00   0.00
    2017-06-14  RM1        0.00   0.00    0.00   0.00   0.00
    2017-06-14  RM2        0.00  20.00   12.00  10.00   0.00
    2017-06-14  RM3        0.00   9.00    7.00   0.00   10.00

您需要加入CPT和Resource,将table1.1*table2.1返回为1,如下所示:

SELECT t1.1 * t2.1 as 1 from t1 join t2 on t1.CPT = t2.CPT and t1.Resource = t2.Resource

您需要加入CPT和Resource,将table1.1*table2.1返回为1,如下所示:

SELECT t1.1 * t2.1 as 1 from t1 join t2 on t1.CPT = t2.CPT and t1.Resource = t2.Resource

只需加入关键字段,并使用ABS返回一个积极的结果

SELECT Q1.CPT, 
       Q1.Resource,
       ABS(Q1.[1] * Q2.[1]) as [1],
       ABS(Q1.[2] * Q2.[2]) as [2],
       ABS(Q1.[3] * Q2.[3]) as [3],
       ABS(Q1.[4] * Q2.[4]) as [4],
       ABS(Q1.[5] * Q2.[5]) as [5]
FROM Query1 Q1
JOIN Query2 Q2
  ON Q1.CPT = Q2.CPT
 AND Q1.Resourece = Q2.Resource

只需加入关键字段,并使用ABS返回一个积极的结果

SELECT Q1.CPT, 
       Q1.Resource,
       ABS(Q1.[1] * Q2.[1]) as [1],
       ABS(Q1.[2] * Q2.[2]) as [2],
       ABS(Q1.[3] * Q2.[3]) as [3],
       ABS(Q1.[4] * Q2.[4]) as [4],
       ABS(Q1.[5] * Q2.[5]) as [5]
FROM Query1 Q1
JOIN Query2 Q2
  ON Q1.CPT = Q2.CPT
 AND Q1.Resourece = Q2.Resource

您可以使用下面的简单连接

Select q1.CPT, q1.[Resource]
     , [1] = abs(q1.[1]*q2.[1])
     , [2] = abs(q1.[2]*q2.[2])
     , [3] = abs(q1.[3]*q2.[3])
     , [4] = abs(q1.[4]*q2.[4])
     , [5] = abs(q1.[5]*q2.[5])   
   from Query1 q1
   join Query2 q2
     on q1.CPT = q2.CPT
    and q1.[Resource] = q2.[Resource]

如果需要,将查询1和查询2替换为子查询

您可以使用以下简单联接

Select q1.CPT, q1.[Resource]
     , [1] = abs(q1.[1]*q2.[1])
     , [2] = abs(q1.[2]*q2.[2])
     , [3] = abs(q1.[3]*q2.[3])
     , [4] = abs(q1.[4]*q2.[4])
     , [5] = abs(q1.[5]*q2.[5])   
   from Query1 q1
   join Query2 q2
     on q1.CPT = q2.CPT
    and q1.[Resource] = q2.[Resource]

如果需要,将查询1和查询2替换为子查询

假设有两个表是t1和t2,那么您的查询应该是

select 
    t1.CPT,
    t1.resource,
    ABS(t1.[1]*t2.[1]) as [1],
    ABS(t1.[2]*t2.[2]) as [2],
    ABS(t1.[3]*t2.[3]) as [3],
    ABS(t1.[4]*t2.[4]) as [4],
    ABS(t1.[5]*t2.[5]) as [5]
from
    t1 join t2
        on t1.CPT=t2.CPt 
        and t1.resource=t2.resource
如果您没有表t1和t2,而这些是您的查询结果;请将查询封装为别名为t1和t2的子查询

select 
    t1.CPT,
    t1.resource,
    ABS(t1.[1]*t2.[1]) as [1],
    ABS(t1.[2]*t2.[2]) as [2],
    ABS(t1.[3]*t2.[3]) as [3],
    ABS(t1.[4]*t2.[4]) as [4],
    ABS(t1.[5]*t2.[5]) as [5]
from
    --( your query 1) 
     t1 join 
    --( your query 2)
     t2
        on t1.CPT=t2.CPt 
        and t1.resource=t2.resource

假设有两个表是t1和t2,那么您的查询应该是

select 
    t1.CPT,
    t1.resource,
    ABS(t1.[1]*t2.[1]) as [1],
    ABS(t1.[2]*t2.[2]) as [2],
    ABS(t1.[3]*t2.[3]) as [3],
    ABS(t1.[4]*t2.[4]) as [4],
    ABS(t1.[5]*t2.[5]) as [5]
from
    t1 join t2
        on t1.CPT=t2.CPt 
        and t1.resource=t2.resource
如果您没有表t1和t2,而这些是您的查询结果;请将查询封装为别名为t1和t2的子查询

select 
    t1.CPT,
    t1.resource,
    ABS(t1.[1]*t2.[1]) as [1],
    ABS(t1.[2]*t2.[2]) as [2],
    ABS(t1.[3]*t2.[3]) as [3],
    ABS(t1.[4]*t2.[4]) as [4],
    ABS(t1.[5]*t2.[5]) as [5]
from
    --( your query 1) 
     t1 join 
    --( your query 2)
     t2
        on t1.CPT=t2.CPt 
        and t1.resource=t2.resource
像这样尝试,我现在没有sql server来亲自尝试,您可能需要对查询进行一些更改

对于负值,可以单独使用以下查询,也可以将其嵌入主查询中

update NewTableName field = field * -1 where field < 0
像这样尝试,我现在没有sql server来亲自尝试,您可能需要对查询进行一些更改

对于负值,可以单独使用以下查询,也可以将其嵌入主查询中

update NewTableName field = field * -1 where field < 0

注意如果数字是正数乘以负数会起什么作用?它检查值是否小于0,然后才与-1相乘。真。出于某种原因,忽略了这一点。请注意,如果数字是正数乘以负数会起什么作用?它会检查值是否小于0,然后才乘以-1。真。因为某种原因错过了。