Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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_Sql Server_Select_Join_Inner Join - Fatal编程技术网

SQL查询,根据条件选择一列的多个实例

SQL查询,根据条件选择一列的多个实例,sql,sql-server,select,join,inner-join,Sql,Sql Server,Select,Join,Inner Join,我将加入3个表格: SELECT TABLE1.FIELD1 FROM TABLE1 JOIN TABLE2 ON TABLE1.ID = TABLE2.FK JOIN TABLE3 ON TABLE2.ID = TABLE3.FK 我想根据一些条件选择TABLE2.FIELD1的几列,例如TABLE2.FIELD1 WHERE TABLE2.condition I,TABLE2.FIELD1 WHERE TABLE3.ANOTHERCONDITION 所以最终的结果是这样的: TABLE1.

我将加入3个表格:

SELECT TABLE1.FIELD1
FROM TABLE1
JOIN TABLE2 ON TABLE1.ID = TABLE2.FK
JOIN TABLE3 ON TABLE2.ID = TABLE3.FK
我想根据一些条件选择
TABLE2.FIELD1
的几列,例如
TABLE2.FIELD1 WHERE TABLE2.condition I
TABLE2.FIELD1 WHERE TABLE3.ANOTHERCONDITION

所以最终的结果是这样的:

TABLE1.FIELD1 | TABLE2.FIELD1 BASE ON CON1 | TABLE2.FIELD1 BASED ON CON2
我不确定我是否足够清楚,如果需要,请要求进一步澄清

报告样本:

Id |   Product | Income Quantity | Outcome Quantity

在此示例中,数量仅在第二个表中的一个字段中,该字段已连接到产品表中。根据不同的条件,它在输出中被渲染了两次,例如,收入在
header.flow==1
处,而输出在
header.flow=-1
处。不确定,但似乎应该使用
CASE
语句

select 
case when <<cod1>> then
table1.field
when <<cod2>> then 
table2.field
end 
from your_table1
inner join your_table2 on <<condition>>
选择
那么什么时候呢
表1.1现场
什么时候
表2.1现场
结束
从你的表格1
把你的表2放在桌子上
类似这样的东西

SELECT ID,
       CASE WHEN flow = 1 THEN Quantity ELSE NULL END as 'Income',
       CASE WHEN flow = -1 THEN Quantity ELSE NULL END as 'Outcome'
FROM Sample
只需在末尾根据需要添加联接,并在CASE语句中更改条件

select 
case when <<cod1>> then
table1.field
when <<cod2>> then 
table2.field
end 
from your_table1
inner join your_table2 on <<condition>>

根据你的评论

我必须使用group by作为流量和总和(数量)。每种产品我有两列

您可以尝试以下方法:

SELECT s1.ID,
    (SELECT SUM(Quantity) FROM SAMPLE s2 WHERE s2.ID = S1.ID AND S2.FLOW = 1) as 'Income',
    (SELECT SUM(Quantity) FROM SAMPLE s2 WHERE s2.ID = S1.ID AND S2.FLOW = -1) as 'Outgoing'
FROM Sample S1
GROUP BY ID
这也可以通过以下方式实现:

SELECT DISTINCT s1.ID,
    (SELECT SUM(Quantity) FROM SAMPLE s2 WHERE s2.ID = S1.ID AND S2.FLOW = 1) as 'Income',
    (SELECT SUM(Quantity) FROM SAMPLE s2 WHERE s2.ID = S1.ID AND S2.FLOW = -1) as 'Outgoing'
FROM Sample S1

样本数据和预期输出将帮助我们更好地理解