sql - 如何编写sql查询来得到这个结果

标签 sql sql-server tsql

我有如下两张表:

<表类="s-表"> <头> request_id update_from_id sw_ref_number raised_by_user_id 募集日期 <正文> 1 0 1 3 2019-08-29 15:08:16.000
<表类="s-表"> <头> id request_id 输入id 值 已删除 <正文> 21 1 1 00001 0 22 1 2 3 0 75 2 1 00002 0 76 2 2 0

我的查询是:

select req.request_id,
       req.sw_ref_number,
       reqDet.[value] , 
       reqDet.input_id 
FROM   SOF.tblSOFRequest req  
       left join SOF.tblSOFRequestDetails reqDet 
              on req.request_id = reqDet.request_id  
where  reqDet.input_id = 1 
or     reqDet.input_id = 2

然后我的结果是:

<表类="s-表"> <头> request_id sw_ref_number 值 输入id <正文> 1 1 00001 1 1 1 3 2 2 2 00002 1 2 2 2

我想要这样的结果:

<表类="s-表"> <头> request_id sw_ref_number epi_db_no 制造商编号 <正文> 1 1 00001 3 2 2 00002

此处input_id = 1表示epi_db_no,input_id = 2表示manuf_no。

我怎样才能得到这个?

谢谢

最佳答案

您可以像下面的查询一样使用自连接来完成。

SELECT req.request_id
    ,req.sw_ref_number
    ,reqDet.[value] AS epi_db_no
    ,reqDet2.[value] AS manuf_no
FROM SOF.tblSOFRequest req
LEFT JOIN SOF.tblSOFRequestDetails reqDet ON req.request_id = reqDet.request_id
LEFT JOIN SOF.tblSOFRequestDetails reqDet2 ON reqDet.request_id = reqDet2.request_id
    AND reqDet2.input_id = 2
WHERE reqDet.input_id = 1

关于sql - 如何编写sql查询来得到这个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68540872/

相关文章:

sql-server - 分布式二级缓存与专注于调优数据库相比有何优缺点

sql-server - 表外键/自身关联?

c# - 验证网络上 3.5 亿个文件的存在

sql-server - 如何使用 TSQL 将属性添加到现有的根 XML 节点?

MySQL:选择一组的最后一个 Max() 值,但由另一组进行汇总

php - 检查一行是否重复,如果唯一则检查第二行

php - 改变多列的列类型

sql - 如何使用 sql 从销售中查找净行并取消行

c# - 如何从 C# 恢复数据库

sql - 确定供应商是否供应列表中的所有产品