SELECT DISTINCT 、UNION、ORDER BY、GROUP BY、HAVING

一、SQL 查询结果去除得复行

select DISTINCT a.员工编号 
					     , CONVERT(date , b.日期) as 日期  
					     , b.工资表编号
					from gd_js a inner join gd_jm b
							on a.计件单主表序号 = b.计件单主表序号 
							inner join inserted i
							on a.计件单子表序号  = i.计件单子表序号

二、排序

--以字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company 
-- 降序
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
-- 第二列排序
SELECT Company, OrderNumber FROM Orders ORDER BY 2 -- 对OrderNumber排序

三、分组 GROUP BY

select   s_fielstype.cvfptype + '小计' , sum(iid)
from dbo.s_fielstype
group by s_fielstype.cvfptype

四、HAVING 分组后筛选

having 作用类似于where,差别是where过滤行,having过滤组
使用顺序:where、group by、having、order by、limit

下面的示例按产品 ID 对 SalesOrderDetail 进行了分组,并且只包含那些订单合计大于 $1,000,000 且其平均订单数量小于 3 的产品组。


USE AdventureWorks;
GO

SELECT ProductID, AVG(OrderQty) AS AverageQuantity, SUM(LineTotal) AS Total
FROM Sales.SalesOrderDetail
GROUP BY ProductID
HAVING SUM(LineTotal) > $1000000.00
    AND AVG(OrderQty) < 3 ;

GO


五、两条SELECT 合并
SELECT UNION

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
					select DISTINCT i.员工编号 
					     , CONVERT(date , i.日期) as 日期  
					     , i.工资表编号
					from  inserted i
							
					UNION
					
					select DISTINCT d.员工编号 
					     , CONVERT(date , d.日期) as 日期  
					     , d.工资表编号
					from  deleteed d
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值