sql - 如何从联合中选择一列
问题描述
我正在尝试从我创建的临时表中选择 4 列,我正在努力让其中一列显示其数据。
我已经以不同的方式编写了语句以尝试获取正确的数据,但是需要一个 Union 才能从第二个表中减去 Quantity
Create table #temp110
(
ItemCode nvarchar(50),
[Quantity 6 months ago] int
)
Create table #temp6to12
(
ItemCode nvarchar(50),
[Quantity 6 to 12 Months Ago] int
)
GO
select top 20
oi.[Itemcode],
sum(qu.[Quantity]) as [Quantity 6 months ago]
into #temp110
from miro.dbo.oitm oi
join miro.dbo.qut1 qu on oi.ItemCode = qu.ItemCode
WHERE DATEDIFF( MONTH, qu.docdate, GETDATE()) < 64
group by oi.[Itemcode], qu.Quantity
order by qu.quantity DESC
-- qty of itms between 6 & 12 months back, lowest 10 !!All Items
select top 20
oi.[Itemcode],
sum(qu.[Quantity]) as [Quantity 6 to 12 Months Ago]
into #temp6to12
from miro.dbo.oitm oi
join miro.dbo.qut1 qu on oi.ItemCode = qu.ItemCode
WHERE DATEDIFF( MONTH, qu.docdate, GETDATE()) > 6
and DATEDIFF( MONTH, qu.docdate, GETDATE()) < 12
group by oi.[Itemcode], qu.Quantity
order by qu.quantity DESC
SELECT
UN.ItemCode,
UN.[Quantity 6 To 12 Months Ago],
UN.[Quantity Differance]
FROM(
select
t1.Itemcode,
t1.[Quantity 6 to 12 Months Ago],
t1.[Quantity 6 To 12 Months Ago] as [Quantity Differance]
from #temp6to12 t1
join #temp110 t2 on t1.[ItemCode] = t2.[ItemCode]
UNION
select
t2.Itemcode,
t2.[Quantity 6 months ago],
- t2.[Quantity 6 Months Ago] as [Quantity Differance]
from #temp110 t1
join #temp110 t2 on t1.[ItemCode] = t2.[ItemCode]
) as Un
order by un.[Quantity Differance] ASC
目前此代码有效,但是它没有显示 [Quantity 6 months ago] 的值,这是我最终需要的。
如果我尝试像使用 [Quantity 6 to 12 Months Ago] 那样从 Union 中调用它,它没有接起来,我怀疑这是因为 [Quantity 6 to 12 Months Ago] 用于从 [Quantity 6 个月前] 中减去前]在联盟。它在数学上使用的事实意味着我不能从联盟中调用它?
期望能够在 select 语句中添加 UN.[Quantity 6 months ago]
解决方案
请注意,当您使用UNION
它时,它会相互评估结果,忽略任何重复项。在您的代码中,您似乎没有任何信息表明数量是来自第一部分还是第二部分。
通过使用UNION ALL
你强制它保持两个结果,即使它们是相同的。
或者,您可以使用某种指示符(例如字符串/文本)来指示数量是否与 6 个月或 6-12 个月相关。
推荐阅读
- outlook - 确定 Exchange Server 是否完全支持 REST API 的最有效方法是什么?
- r-markdown - 如何在 kable table R markdown 中使单个单元格变为粗体?
- python - 如何使用pyodbc提交存储过程执行?
- c++ - 行为异常的 getline() 函数,无法接受输入
- jquery - 如果似乎没有错误,如何开始调试 jQuery?
- python - 两个不同的python环境搞砸的问题
- sql - Hibernate中未定义的过滤器参数
- spring-boot - Spring boot - FirebaseMessaging 服务注入在另一个服务中不起作用
- reactjs - 我如何将 API 调用从至尊函数发送到另一个名为 product 的组件,以更改名为 cart: true 并显示在购物车中的模拟数据
- c++ - c++公共成员变量不可访问