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。真。因为某种原因错过了。