SQL语句学习笔记

时间:2023-03-08 20:21:28
SQL语句学习笔记

从外部EXCEl文件导入sqlserver数据库操作命令

exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
go select * into abc1_1 from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=文件路径',SQLResults$)

注意:文件路径到excel下某个固定的sheet,sheet名字不要有空格

数据库合并

insert into [新数据库名(合并后的)] select [字段] FROM [数据库] union select [字段] FROM [数据库] union ...

一般性查询语句

建立视图可以快速查询合并后的数据

select count(1) from [数据库名] --查询个数
select top 50 percent * from 表名 order by 排序字段 -- 只查前50%的数据 select distinct * from dbo.v_AllUser where
服务区域 = '杭州供电公司' and 联系电话 = '' select "联系电话"
from dbo.v_AllUser
where "业务类型" = '投诉' and 服务区域 = '杭州供电公司'
group by "联系电话"
having count(distinct "工作单编号")=3 select tb.*
from (
select "联系电话"
from dbo.v_AllUser
where "业务类型"='投诉' and 服务区域 = '杭州供电公司'
group by "联系电话"
having count(distinct "工作单编号")=3
) ta, dbo.v_AllUser tb
where ta."联系电话"=tb."联系电话"

修改日期格式语句

select distinct
[联系电话],[所属区县],[服务区域],
replace(CONVERT(VARCHAR(19),受理时间,120),'-','') as 受理时间
,[业务类型],case when 业务子类 ='' then '-' else 业务子类 end as [业务子类],
0 as "是否按5"
from dbo.v_AllUser
where
服务区域 = '杭州供电公司' and 联系电话 <>'' and [所属区县] <>'' and [服务区域] <>''
and [受理时间] <>'' and [业务类型] <>'' order by 受理时间 /*下面这个求得是加入业务子类的非话务表语句, 受理时间[)的作用*/
select
[联系电话],[所属区县],[服务区域],
replace(CONVERT(VARCHAR(19),受理时间,120),'-','') as 受理时间,[业务类型],
max(case when 业务子类 ='' then '-' else 业务子类 end )as [业务子类],
case when 投诉一级分类 ='' then '-' else 投诉一级分类 end as [投诉一级分类],
0 as "是否按5"
from dbo.v_AllUser
where
服务区域 = '杭州供电公司' and 联系电话 <>'' and [所属区县] <>'' and [服务区域] <>''
and [受理时间] <>'' and [业务类型] <>'' and 受理时间 between '' and ''
group by 联系电话,[所属区县],[服务区域],[受理时间],[业务类型],[投诉一级分类]
order by 受理时间

去除字段文本中特殊的换行字符

update HZ_XX set [受理内容] = replace(replace([受理内容],char(13),''),char(10),'')

或者参考

SQL语句学习笔记

一定要注意聚合函数的练习,品味下面sql语句的作用

select
[联系电话],[所属区县],[服务区域],
replace(CONVERT(VARCHAR(19),受理时间,120),'-','') as 受理时间,
投诉一级分类,
[业务类型],
max(case when 业务子类 ='' then '-' else 业务子类 end )as [业务子类],
0 as "是否按5"
from dbo.v_AllUser
where
服务区域 = '杭州供电公司' and 联系电话 <>'' and [所属区县] <>'' and [服务区域] <>''
and [受理时间] <>'' and [业务类型] = '投诉' and 受理时间 between '' and ''
group by 联系电话,[所属区县],[服务区域],[受理时间],[业务类型],投诉一级分类
having count(distinct'联系电话')=1
order by 联系电话,受理时间

A New Begining

建立一个表结构

CREATE TABLE Person(

LastName varchar(30),

FirstName varchar,

Address varchar,

Age int

)

查询数据库中某个表的所有字段name改为*可以查看更多的内容

select * from syscolumns where id = object_id('表名')

修改表字段的长度

alter table dbo.Person alter column Address varchar(30)

给person增加一列city

alter table dbo.Person add city varchar(30)

插入一行值

INSERT INTO dbo.Person values ('wei', 'Li', 'Hangzhou', 14, 'HZ')

或指定列插入

aaarticlea/png;base64,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" alt="" />

修改表中某个字段的值

update dbo.Person set LastName = 'xiao' where LastName = 'wei'

删除age为null的行

delete from dbo.person where Age is NULL

删除表结构中相同的行

select distinct * into #a from dbo.Person

delete from dbo.Person

insert into dbo.Person select * from #a

drop Table #a

显示表结构

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkYAAAC5CAIAAABC5GfeAAAWVklEQVR4nO2d3YGrIBBGrcuCqMdqbCbFuA9EHP6MGNkwcM7LvWsMDgPyCcGZaQMAAOiC6dcGAAAAPAOSBgAAnYCkAQBAJyBpAADQCUgaAAB0wn9I2muZp2mapmleXg8VuZppmublodK+YjUP1gsAAO7zf7O01zL7Q/9qvhK51bQhaUmW2ay/tgEAYDSmeZqmeTbTNE1mXc1k/7O5udVbdNxf9mv7vGua5nkW0uKOv8sSH0WS5s6/rGuv47JmFZImjgdTt5yd74pO0zQvKbtCkuenZ5/SmMObH/y5X4H5HgDAfSY7uJrVDqpm3baXm2KsRg6x7rAUJzvV2k9wQ3JiYTApae8PLq0iyhU+r3xZ8GuZ3fGcnXtF3cU/CMn5+RmpTs3SMv48aoSkAQB8wWSH5G3bttW46Zkba4//esPxMWnxBnspS6u5Kmn7px9GdF8PjstFs6LDpKSdxSuWH84vkLSsPwEA4AE+SJobebM/DjnpCiQt+PNU0uTUKktO0i5K1CGxv5S0z/4EAIC7fJI0O/iGK2b+hG0/Wx6XC32WtKRdXXX0rxQtJCbFMmenf75cVsxe+OT8jKTJJViv+Nif+2mt7OEEAFDKNLtluffvUy+rMr56BINycpXPXwM0xrhZUXphsPzXI28d0fg/pyVMytrpf3RlupQ6P1ev4MOo+JSGruaiIQAAkOXCJv6bv/o0vcn+lyT8ybttAAAPcCZpyc0VV5Bb3r81sCNu+xMAAK5AQCwAAOgEJA0AADoBSQMAgE5A0gAAoBOQNAAA6AQkDQAAOgFJAwCAThCSRiDdZ8GfFi1+aM3O1uypzWj11YK2dkHSqoE/LVr80JqdrdlTm9HqqwVt7YKkVQN/WrT4oTU7W7OnNqPVVwva2mVK5Ruz4ZrOww1zPHMcf+ryQ2t2tmYP9R3zeLZdWodZWjXwp0WLH1qzszV7ajNafbWgrV2QtGrgT4sWP7RmZ2v21Ga0+mpBW7sgadXAnxYtfmjNztbsqc1o9dWCtnbhvTQAAOgEJA0AADoBSQMAgE5A0gAAoBOQNAAA6AQkDQAAOgFJAwCATkDSAACgEw5Jey3zxVfqzoN/rWa6WI6LIpY/fzXTNM3LldJa46I/U6HUdL3a+IGLfrCR5uyZh09Omz7Xfy70q/t2eraJK12/0LP2RB3oahw+GdrvXuy+e34+Ke3m/aJzfNDCdV1ohDuStm3bMou74OX9Vcqn665GZ5e9fova01bzHlm0daEPXO9Xq5ln15Ney3yt3XPll96K18+X/X01tYK5Ftjvus51gy6791pJoZ03RoQi/x9nXqvIVyPU2IwlacFXsk9t8skq6n+J64rzzdq5pDnkuPT+vvCl+2uZ7T/mcOgr+Epbj65FkrYsuxf2ocrWScYMj+dkv5K0ZfblI+n/TDs+aE/QdY4vZvpDGHrdfSQ+cJcu9n80jbooJuWS5o8M+3XN6ioyL68ze1zDyK/m/DAs40hatsnjcoKHquB+js6XK5f9Lzw6Qknbwuhq7klTDDLWoe74mZ9/RZmkvfZKi6dvbxUgijj3I0lbTdT5s/7PtONT9oRdZ//zrD8kJzfr6ko5etUt/9eepaWf22wldxmTFmTt2VXa/v99UsYPYzKOpCVmaelyEovf4WzEOz+4Z55bIflnHpA0eSsKtwS32cs1xqmff0WppL1bvG1Js87dR1BxNOP/ZDs+ZU9a0s77Q/K28r/SsqQlZmleFcKSTiQtcdGMH8ZkLElLkph1ffqRH0nbMpLmvCEdHj8zvFMmNumoYkmzNVqaljSxeCV+xTrxf6odn7Ins/B4ak/itvL2dck6tippKfY1w+DyJZKW9cOYIGmJcs73QKYWHuUdNPDC47Zt1tXhypXnE9cW1/ea/ic3JC1YcA5+HGpK0mSznfs/bsen7InumAv9IZY0ecRfuLvh/+PY5f0ztyXNtYawOlwWztoTt0jeD2MyhKR5Pzof38glAg++Mn1IEB58YozSn9Pu/DaQXOeIBoVlno1Jt0HKzz/moh9cm79PXk20w2Jy+2Les5B0/znrh9/bGf2Q46nvmf8LN0de7T+n2zGS9uS+IEp6dzCpFZf9f3ilqBMW+9+/rjsutoeIWyNhT2i/lPC0H4ZkCEmDKzzmz+hBUldDaelX1e0sTKWoxW9PMVp9taCuXZC0Wnzvz+TLsOIJUsfMVUu/qmfnvZeatfjtKUarrxbUtQsBsQAAoBOQNAAA6AQkDQAAOgFJAwCATkDSAACgE5A0AADoBCQNAAA6QUha4aug8AH8adHih9bsbM2e2oxWXy1oaxckrRr406LFD63Z2Zo9tRmtvlrQ1i5IWjXwp0WLH1qzszV7ajNafbWgrV2mbBzQ4rCwHDfrlo+r2pqd+KFNO1uzh/qOeTzbLq3DLK0a+NOixQ+t2dmaPbUZrb5a0NYuSFo18KdFix9as7M1e2ozWn21oK1dkLRq4E+LFj+0Zmdr9tRmtPpqQVu78F4aAAB0ApIGAACdgKQBAEAnIGkAANAJSBoAAHQCkgYAAJ2ApAEAQCcgaQAA0AmHpL2W+eIrdWFQMBv5K4wJpiIeWEWu+9OymunBVxqDi9smi8tPH38t87w8ZclFP0hLjq60m3F0uecMu2fntm1BR39/K7grhJ3p++Uhe3J+cxedl5fnT88aYUru+H9Rer/8imfv0/bR0i6OO5KWPX81x72wmsFVrWpXWOZT38qGsCOdWeMoALnjUQFfUfKoNM+uXkJWZVd6LXMlVStpL8897nuyhHjge+D+ylqT85ssYDWeyqbL/mGkiF/eL8Nwww9I2np2wkhcr757iJbn24PGmPDBOYqQHXdSK1UhRcPYcxO1oqF5Wcwx6bcGRJY8KLf37AxMeO3jhFfCKxw9qkpawm8dS5qYULqvvO8XEVv+eNDI3y/is899quw+DSydF1c/W4yYPadubdf5p2maZ2NPexeXP/+7cSNXa13DeEVJqzX2KOF7f76W2XW84NPTp62M38uGscfWV8qG5tduzj40J7tZjXvs2Vla/FRRV9Iiv209S9oqnH/42XuK8GuSvF+WWXTx1Vyc/V+/T8PVBXlD7apr/2/PCp6IpKqZ9SjOVTN9/v1x42p9GwdJq8UjklZ0ix5fe0DSMlO9ckqH5veg3LqkTeL52JsoxA/y5eWXnZ/029axpPkTjpuSFk2jL9b98n3qOTwkvlgiP9met2xXPnfgrWzJ82+PG5fr2zgsPNYCSXPmlA3NtuKLmoXHRAmpH5KrS1rgt6BhfTfKj2Q3yx3/By7X11s/kEbqlrTc+TlJy5ePpL15WtLGnqNVl7TjxolGT90Lj/vV/e2ODW8PSZYQP1f8g6QFfpM2BPYoljSpzXKJTZYQLvOl7xf/gqcKdGpn7j71byH/Rs3syUp4ICtp2Vv07riRZghJu7aJf2xBK3vqTCwgOHfuy+j+ctaa/jnaEgyn4QXinfH+cWf97bpLLvpBbjp//53cB9/WJv7o1xFhoR1Wt9z98pA9xX6Lu5vfx8otfYbr/hcjzWzMsStEfDAvi/l8v2QWMDPcuU/lBfbyz7qDP4aaVZb+flx5byrZf04rs+d83Mh5u39Jgyv80p9fz5B/son/t7RmZ2v21Ga0+mpBXbsgabX4rT+/uvhzU7Tt1364Tmt2tmZPbUarrxbUtQsBsQAAoBOQNACAbduSO+PLfnmCn4OkAQBAJyBpAADQCUgaAAB0ApIGAACdULyJ/zyvFTi+3PwqX6h8kMCodAu+Um+Ibjc39z/Sr5p61fp/aM2e2oxWXy2oa5d70UPS+ZlA8n1XeD4ikf8G9Wq84ElXQiHdeAX7+37VXkCs/6A1e2ozWn21oK5dbkpaMj+TDPUig60V5fvphqKukMyr9I5CG8+WUvmitpM8TOKEnCBdlLQbTzDf9qsWwxb/B63ZU5vR6qsFde1yV9JS+ZnSeYxcaNHL+X76oCxmZiqvUvB/EagtnS9qLyvMwyQ+i7XgCAPnmZ59I6c4nPGX/SoZHbvGPdbarduaPbUZrb5aUNcu9yXtPehEgbHDsTAXSTrxVmNX7zMWhC0uTRJxEm71ZLiPg8N738soVaSDpUlnvuxXSNogjFZfLahrly8kza2MvUfkTB6jbHKEq9kclFJN0rL5ovzTUsWdiVHOjPB4dUkL+hULj2MwWn21oK5dvpI0Lz9TNF37JGnPpeRqkqKFx2RepbSk5fwcnJa+jneuFCe5+CkT2Ec6WH3h0ZnTcL60/6A1e2ozWn21oK5dbm7in1L5mcR62J7HyO1uuJzvpxuKukL849VryeY9SvjZzno/LeNGEyxvn0nankA/qm0PUZQv7X9ozZ7ajFZfLahrF5LL1KJFf/4ij1qLfkjRmp2t2VOb0eqrBXXtgqTVok1//n8etTb9ENOana3ZU5vR6qsFde1CQCwAAOgEJA0AADoBSQMAgE5A0gAAoBOQNAAA6AQkDQAAOuHmJn756uvzOVCe466dXvSKe3y5+VW+kP4gV/OlPfdGc9Gr1uRLc7RmT21Gq68W1LXLvYBYYX6YCiPvA0V+Z+e3ISi/7wrPPytczJf2aBzFooBY5EtztGZPbUarrxbUtUu5pJ0OtCKwk8wtM7mgjsGTuDEmOD+O0O+uls4H9nKHN/lXqZ3Bpc0qJE2adHk8vT3r/X2+tO3JiVpZjEfype20Zk9tRquvFtS1S7mk5QPjynC3QezHZJKUKLixHJ3zaZWnKB+Yb5II9F9kpwzI6y083svr9sWs99f50t7Hn+nJpWGLyZdmac2e2oxWXy2oa5fnJC2aFXm5QjKSls4Hdippyasf57sTSu0MzpezhCng0iShWnKZ0KRK+dJKk8jkKI7E/yJf2ra1Z09tRquvFtS1y62Fx+QQ/FNJc8eX1I8xl+zMSdrdH9WqSdo/5Uv7maS5FVcWHluypzaj1VcL6trl5vYQceaxbBbuMIi3HsiltA+SJgZw/2ek/HKi/f3L2+NQYqc3VMqtE/fW4L73Z9o/coiXS7fBaenrXMqXljDqC25IGvnStvbsqc1o9dWCuna5uYk/zu/1LiK5ICY3ZS9e1rQplQ9s2+QOCG/UPVv+i0blYjvlFezGlePntHoLj2k7T/wjzK+VL+3/t4eQLy2gNXtqM1p9taCuXTpKLlPnJ5bbtOjPy2t2P9nE/1tas7M1e2ozWn21oK5depA0b3LVzEvfbfrzklHPTdG2Vv0Q05qdrdlTm9HqqwV17UJALAAA6AQkDQAAOgFJAwCATkDSAACgE5A0AADoBCQNAAA64VZArE9vPFfd9Fm7/Kf4cvOrzGDwIIFR4h14z9SjkaUFtzb3F71qHb5LTr60YRitvlpQ1y633kuTL+KmYnZcp3b20B9mJ/2+K5ymx7lFlC8tHXZMRO4I3rm+8Qp2UUAs8qU5WrOnNqPVVwvq2uVrSRNfdA/XcTkihNOci3D/IS/aafmJfGP58v+Hoq7QQr408ZQiSg10tXyiVhbjkXxpO63ZU5vR6qsFde3ygKTlFC55RIYD3krzomXKz+UbOyu/PkVhi3+XL23/yAuo6EuapyjF676lYYvJl2ZpzZ7ajFZfLahrl/+QtJOQVcVJZBLlnyV/0SBpv86XFoXzP5W04qQzxZH4X+RL27b27KnNaPXVgrp2eXLh8VI5foR1JO23+dKCSe1ehp+1wP9SdUlzK64sPLZkT21Gq68W1LXL95IWjjBxOd4B//QbedGSC4/+BeTPcpny61O08Ji0Py1pcoiPJlhF+dKCRWBpuhELxdHqZd2FR2ca+dKasqc2o9VXC+ra5ftN/G60CfN1uU/Oko0V5EXLlr/l8qKly/8nirrCD/KlnW6fOT4LSqm2PYR8aQGt2VOb0eqrBXXt0kNymTZp0Z9fr9lV3cT/W1qzszV7ajNafbWgrl2QtFq06c+vjKr5qvXPac3O1uypzWj11YK6diEgFgAAdAKSBgAAnYCkAQBAJyBpAADQCUgaAAB0ApIGAACdcGcTf/CO7uNbPE8i7t/gV/nVSje/PmtncHGZjSy4aOL4rc36OYpetQ7fJSdf2uWTfxRR4DFa8z9Y1LXLvffSvDduK1W5MPpGc7dy1a7wob5REM7JrHGsrNzxqICvKAqIRb40R1mAukx+O0W05n+wqGuXByRNhiIUEzgZDWteFvGYfWROeZ+UnCskQ7Anpob5wE4ns73Yzrc95rEAWtf9mbQza89pICtXu4T1ufCPyePPTdTKYjySL23nVmzMRJhpLbTmf7Coa5cnZ2nLLAZl8eQoxMuLB59NnpKzJ58n7OQ+ToVRTtspgwB/35ClJcTnn9hzOm5lxvwiSXtuHbR0aCZfmuW+pFVbm61Ka/4Hi7p2uS1p0W9p0eOhu9MC+XEnFkuaP0G5KWl5O8/tKeURScvZcyZpqSQycQkfj5cmkTkxp2xofpEvbduQNGgDde3ywCzt+H5W0tKaUihpZ3nCkDTva6olzVacfGklyYlO8ttpoTX/g0VduzwnaaF0HZktbZpJcVq0mPZKZKJMSFE+T9hJXrTUwmPaTlWSlq2v9oXH/erkS7tsz1l+OzW05n+wqGuXLzfx+9/ILAwu8zutV35nx3v/yLy8TvKiieJlnrBt2y7lXcvtsPiYn+wel/2ZtvODPad54IIJVniBeGe8f9xZf7vukqJN/BP50nYKd/yedAcdtOZ/sKhrl/9ILqPNJ8/wy67wi7xoObTcEq3Z2Zo9tRmtvlpQ1y7VJU3MrFT+an2b33aF/8+LdlqYgluiNTtbs6c2o9VXC+rahYBYAADQCUgaAAB0ApIGAACdgKQBAEAnIGkAANAJSBoAAHQCkgYAAJ0gJK1ONNhxwZ8WLX5ozc7W7KnNaPXVgrZ2QdKqgT8tWvzQmp2t2VOb0eqrBW3tgqRVA39atPihNTtbs6c2o9VXC9raZYqzJO+xT3Nhfzl+ehx/6vJDa3a2Zg/1HfN4tl1ah1laNfCnRYsfWrOzNXtqM1p9taCtXZC0auBPixY/tGZna/bUZrT6akFbuyBp1cCfFi1+aM3O1uypzWj11YK2duG9NAAA6AQkDQAAOgFJAwCATkDSAACgE5A0AADoBCQNAAA6AUkDAIBOQNIAAKATpm0Lwnm1HsdrNZOuV/8AAOB/2CWtdSH7MTgIAKB97kiandPNy2uf3R1fFtO998HglHfY53kJz5/neT+Yw00m5SzNHjTGBNe9UoXwunK2mjyoYhoLADAqdxcerTTZcX819jvLLMRmNe9PI710McNey+zOX41QkVPkt9wRZ3b86XkJ8rryq69llvYwSwMAaJ9oe8hqLolaHMsyL132g2W24rGaQypkqp6rmpGUtOPLl4Jspq6byA8kZ59IGgBA68Q7HqXk5CmRtNXMy2s187KaeVkz6uBmdZ94QtKS1z2rOJIGANA+0+YvGL6W+eYszV+48xRiNcaYeXltq5nnQxy88y/ODp+QtNx1T/ZSHl9ZDb+mAQC0yXuWJrZLfJwqhYm9jwHeX7vzj1tJ8FTDX+n7qBPphOLummY9TjlXtZPrZj9ay7afAADA/8Or1gAA0AlIGgAAdAKSBgAAnYCkAQBAJyBpAADQCUgaAAB0ApIGAACdgKQBAEAnIGkAANAJSBoAAHQCkgYAAJ3wB/WTZqwoHiOTAAAAAElFTkSuQmCC" alt="" />

Sql选择的字段可以另外起名字,pl/sql客户端运行

select from_id fromId, to_id toId, is_join isJoin from sys_area_join where area_name = 10000

把from_id, to_id, is_join 重命名为fromId, toId, isJoin 方便匹配结构体。可能涉及到类的反射机制。

问题:

表A结构

aaarticlea/png;base64,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" alt="" />

表B结构

aaarticlea/png;base64,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" alt="" />

合并两个表为C如下形似,按照KPI_TIME合并为如下形式。

n  表B的KPI_TIME范围一定大于表A,合并两个表时,指定时间范围[N, M]。

n  如果表A不存在该日期,则KPI_TOTAL填充为-1

KPI_Time

KPI_TOTAL

hoildy

rain

ratio

templowthreshold

tempupthreshold

week

2015-08-31

-1

0

2

1

23

28

2

这样的SQL怎么写?

select
b1.kpi_time dateTime,
(case when t_kpi_ykrs.kpi_total is null then '-1' else t_kpi_ykrs.kpi_total end ) as passengerFlow,
b1.holidy ifHoliday,
b1.rain ifRain ,
b1.ratio adjustFactor,
b1.templowthreshold lowTemperature,
b1.tempupthreshold highTemperature,
b1.week
from (
select t_forecast_param.kpi_time,
max(case when t_forecast_param.kpi_key='hoildy' then kpi_value else '' end) as holidy,
max(case when t_forecast_param.kpi_key='rain' then kpi_value else '' end) as rain,
max(case when t_forecast_param.kpi_key='ratio' then kpi_value else '' end) as ratio,
max(case when t_forecast_param.kpi_key='templowthreshold' then kpi_value else '' end) as templowthreshold,
max(case when t_forecast_param.kpi_key='tempupthreshold' then kpi_value else '' end) as tempupthreshold,
max(case when t_forecast_param.kpi_key='week' then kpi_value else '' end) as week
from t_forecast_param
where t_forecast_param.kpi_time >='' and t_forecast_param.kpi_time <='' and t_forecast_param.kpi_area = 14100
group by t_forecast_param.kpi_time
) b1 left join t_kpi_ykrs on
(b1.kpi_time=to_char(t_kpi_ykrs.kpi_time, 'yyyymmdd') and t_kpi_ykrs.kpi_area=14100 and t_kpi_ykrs.kpi_code = 'YKRS_05')
order by dateTime asc

参考资料:

http://www.iteye.com/problems/69179

aaarticlea/png;base64,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" alt="" />

要求 KPI_TIME, KPI_ID, KPI_CODE, KPI_AREA 一致,就更新KPI_VALUE
否则,插入KPI_TIME, KPI_ID, KPI_CODE, KPI_AREA、KPI_VALUE

merge into t_kpi_rlyp a
using (select 1 from dual ) b
on (a.KPI_TIME=to_date('', 'YYYY-MM-DD HH24:MI:SS') and a.KPI_ID='' and a.KPI_CODE='RLYP_06' and a.KPI_AREA='')
when matched then
update set a.KPI_VALUE=64559
when not matched then
insert (KPI_TIME, KPI_ID, KPI_CODE, KPI_AREA, KPI_VALUE)
values (to_date('', 'YYYY-MM-DD HH24:MI:SS'), 8006, 'RLYP_06', 14100, 64558)

参考资料

http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9016.htm

感谢 顺子、王小波的帮助

sql取A字段重复记录的B字段值最大的一条记录
2009-10-04 14:47 ashow07 | 浏览 5898 次
SQL 如 有个表里有字段 id,name,..... 当name是重复时取其id最大的一条记录 分享到:
2009-10-05 15:17
提问者采纳 select max(id) id,name from 表 group by name --如果表中还有其他字段要查出,那么
select * from 表 where id in
(select max(id) from 表 group by name ) ----------------------------------------------------------- da
  select * from t_test where rowid in (select max(rowid) from t_test group by id)

批处理建立表结构

declare
gp varchar2();
begin
for i in .. loop
if i< then
gp:=''||to_char(i);
else
gp:=''||to_char(i);
end if; execute immediate 'create table home_'||gp||'(msid varchar2(32),lac varchar2(32),ci varchar2(32),staytime number)';
execute immediate 'create table work_'||gp||'(msid varchar2(32),lac varchar2(32),ci varchar2(32),staytime number)';
execute immediate 'create table homework_'||gp||'(msid varchar2(32),lac_home varchar2(32),ci_home varchar2(32),staytime_home number,lac_work varchar2(32),ci_work varchar2(32),staytime_work number)'; end loop;
end;

问题汇集

-------------------------------------------------------answers

aaarticlea/png;base64,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" alt="" />

select ta.id, tb.lc, ta.val
from (select id, max(val) as val from t_test group by id) ta, t_test tb
where ta.id = tb.id
and ta.val = tb.val; --------------------------------------------------------------------------------// select *
  from (select a.*, row_number() over(partition by id order by val desc) td
          from t_test a)
 where td = 1;

sql 分区间求解分布情况

select class_time, count(*) as vol
from (select a.*,
case
when odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then else end as class_time
from (select a.*,
(to_date(timestamp_t, 'yyyymmddhh24miss') -
to_date(timestamp_o, 'yyyymmddhh24miss')) * * as odtime
from od_1800 a
where dis >
and msid in (select msid
from tbl_msid_attributeid
where attribute = )
and substr(timestamp_o, , ) = ) a)
group by class_time
order by class_time;

深度阅读

--求解常驻出行次数分布
select frequent, count(*) as vol
from (select a.msid, nvl(b.frequent, ) as frequent
from (select msid from tbl_msid_attributeid where attribute = ) a
left join (select msid, count(*) as frequent
from od_1800
where dis >
and msid in (select msid
from tbl_msid_attributeid
where attribute = )
and substr(timestamp_o, , ) =
group by msid) b on a.msid = b.msid)
group by frequent order by frequent; --求解流动出行次数情况 select frequent, count(*) as vol
from (select a.msid, nvl(b.frequent, ) as frequent
from (select msid from tbl_msid_attributeid where attribute = ) a
left join (select msid, count(*) as frequent
from od_1800
where dis >
and msid in (select msid
from tbl_msid_attributeid
where attribute = )
and substr(timestamp_o, , ) =
group by msid) b on a.msid = b.msid)
group by frequent order by frequent; --求解常驻移动情况 select class_dis, count(*) as vol
from (select a.*,
case
when dis < then when dis >= and dis < then when dis >= and dis < then when dis >= and dis < then when dis >= and dis < then when dis >= and dis < then when dis >= and dis < then else end as class_dis
from od_1800 a
where dis >
and msid in
(select msid from tbl_msid_attributeid where attribute = )
and substr(timestamp_o, , ) = )
group by class_dis order by class_dis; --求解流动人口移动情况 select class_dis, count(*) as vol
from (select a.*,
case
when dis < then when dis >= and dis < then when dis >= and dis < then when dis >= and dis < then when dis >= and dis < then when dis >= and dis < then when dis >= and dis < then else end as class_dis
from od_1800 a
where dis >
and msid in
(select msid from tbl_msid_attributeid where attribute = )
and substr(timestamp_o, , ) = )
group by class_dis order by class_dis; --常驻出行时间分布情况 select class_time, count(*) as vol
from (select a.*,
case
when odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then else end as class_time
from (select a.*,
(to_date(timestamp_t, 'yyyymmddhh24miss') -
to_date(timestamp_o, 'yyyymmddhh24miss')) * * as odtime
from od_1800 a
where dis >
and msid in (select msid
from tbl_msid_attributeid
where attribute = )
and substr(timestamp_o, , ) = ) a)
group by class_time
order by class_time; --流动出行时间分布情况 select class_time, count(*) as vol
from (select a.*,
case
when odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then when odtime >= and odtime < then else end as class_time
from (select a.*,
(to_date(timestamp_t, 'yyyymmddhh24miss') -
to_date(timestamp_o, 'yyyymmddhh24miss')) * * as odtime
from od_1800 a
where dis >
and msid in (select msid
from tbl_msid_attributeid
where attribute = )
and substr(timestamp_o, , ) = ) a)
group by class_time
order by class_time; --九区分布情况 select c.district, count()
from (select *
from od_5400 a
where dis >
and msid in
(select msid from tbl_msid_attributeid where attribute = )) a
left join (select *
from (select a.*,
row_number() over(partition by msid order by staytime desc) id
from homeresultall a) a
where a.id = ) b on a.msid = b.msid
left join tbl_lac_ci_district c on c.lac = b.lac
and c.ci = b.ci group by c.district order by c.district; select c.district, sum(a.dis)/count()
from (select *
from od_5400 a
where dis >
and msid in
(select msid from tbl_msid_attributeid where attribute = )) a
left join (select *
from (select a.*,
row_number() over(partition by msid order by staytime desc) id
from homeresultall a) a
where a.id = ) b on a.msid = b.msid
left join tbl_lac_ci_district c on c.lac = b.lac
and c.ci = b.ci group by c.district order by c.district; select c.district, sum(a.odtime)/count()
from (select a.*,(to_date(timestamp_t, 'yyyymmddhh24miss') -
to_date(timestamp_o, 'yyyymmddhh24miss')) * * as odtime
from od_5400 a
where dis >
and msid in
(select msid from tbl_msid_attributeid where attribute = )) a
left join (select *
from (select a.*,
row_number() over(partition by msid order by staytime desc) id
from homeresultall a) a
where a.id = ) b on a.msid = b.msid
left join tbl_lac_ci_district c on c.lac = b.lac
and c.ci = b.ci group by c.district order by c.district; --ps辅助: select c.district, count(*) from (select * from tbl_msid_attributeid where attribute = )a left join (select *
from (select a.*,
row_number() over(partition by msid order by staytime desc) id
from homeresultall a) a
where a.id = ) b on a.msid = b.msid left join tbl_lac_ci_district c on c.lac = b.lac
and c.ci = b.ci group by c.district order by c.district --基家出行
select a.vol/b.vol as homebasedrate from
(select count(*) as vol from (select a.*,b.lac||b.ci as laccihome from
(select * from od_5400 where dis> and msid in (select msid from tbl_msid_attributeid where attribute=))a left join
(select * from(select a.*, row_number() over(partition by msid order by staytime desc)id from homeresultall a) where id=) b on a.msid=b.msid)a where
(laccellfrom=laccihome or laccellto=laccihome) and substr(timestamp_o,,)=)a,
(select count(*) as vol from (select a.*,b.lac||b.ci as laccihome from
(select * from od_5400 where dis> and msid in (select msid from tbl_msid_attributeid where attribute=))a left join
(select * from(select a.*, row_number() over(partition by msid order by staytime desc)id from homeresultall a) where id=) b on a.msid=b.msid)a where
substr(timestamp_o,,)=)b; select a.vol/b.vol as homebasedrate from
(select count(*) as vol from (select a.*,b.lac||b.ci as laccihome from
(select * from od_5400 where dis> and msid in (select msid from tbl_msid_attributeid where attribute=))a left join
(select * from(select a.*, row_number() over(partition by msid order by staytime desc)id from homeresultall a) where id=) b on a.msid=b.msid)a where
(laccellfrom=laccihome or laccellto=laccihome) and substr(timestamp_o,,)=)a,
(select count(*) as vol from (select a.*,b.lac||b.ci as laccihome from
(select * from od_5400 where dis> and msid in (select msid from tbl_msid_attributeid where attribute=))a left join
(select * from(select a.*, row_number() over(partition by msid order by staytime desc)id from homeresultall a) where id=) b on a.msid=b.msid)a where
substr(timestamp_o,,)=)b; -----建立职住表
create table homeworkresult as select a.msid,a.lac as lac_home,a.ci as ci_home,b.lac as lac_work,b.ci as ci_work from
(select * from(select a.*, row_number() over(partition by msid order by staytime desc)id from homeresultall a) where id= and msid in (select msid from workresultall))a left join
(select * from(select a.*, row_number() over(partition by msid order by staytime desc)id from workresultall a) where id=)b on a.msid=b.msid; --通勤出行
select a.vol / b.vol
from (select count(*) as vol
from (select a.*,
b.lac_home || b.ci_home as laccihome,
b.lac_work || b.ci_work as lacciwork
from (select *
from od_5400
where dis >
and msid in (select msid
from tbl_msid_attributeid
where attribute = )) a
left join homeworkresult b on a.msid = b.msid) a
where substr(timestamp_o, , ) =
and ((laccellfrom = laccihome and laccellto = lacciwork) or
(laccellto = laccihome and laccellfrom = lacciwork))) a,
(select count(*) as vol
from (select a.*,
b.lac_home || b.ci_home as laccihome,
b.lac_work || b.ci_work as lacciwork
from (select *
from od_5400
where dis >
and msid in (select msid
from tbl_msid_attributeid
where attribute = )) a
left join homeworkresult b on a.msid = b.msid) a
where substr(timestamp_o, , ) = ) b; select a.vol / b.vol
from (select count(*) as vol
from (select a.*,
b.lac_home || b.ci_home as laccihome,
b.lac_work || b.ci_work as lacciwork
from (select *
from od_5400
where dis >
and msid in (select msid
from tbl_msid_attributeid
where attribute = )) a
left join homeworkresult b on a.msid = b.msid) a
where substr(timestamp_o, , ) =
and ((laccellfrom = laccihome and laccellto = lacciwork) or
(laccellto = laccihome and laccellfrom = lacciwork))) a,
(select count(*) as vol
from (select a.*,
b.lac_home || b.ci_home as laccihome,
b.lac_work || b.ci_work as lacciwork
from (select *
from od_5400
where dis >
and msid in (select msid
from tbl_msid_attributeid
where attribute = )) a
left join homeworkresult b on a.msid = b.msid) a
where substr(timestamp_o, , ) = ) b;

tired

 存储过程

、简单SQL语句,HellWorld示例

--输出信息

begin

  dbms_output.put_line('Oracle Hello World!');

end;

、变量的定义、使用

--定义变量

declare

  sName varchar2();

begin

  sName := 'jack';

  dbms_output.put_line(sName);

end;

--常用类型

declare

    sNum number();

    sCount binary_integer := ;

    sSal number(, ) := 5000.00;

    sDate date := sysdate;

    sPI number(, ) := 3.14;

    sValid boolean := true;

    sName varchar2() := 'Jackson';

begin

    dbms_output.put_line('sName:' || sName);  

    dbms_output.put_line('sCount:' || sCount);  

    dbms_output.put_line('sSal:' || sSal);

    dbms_output.put_line('sDate:' || sDate);

    dbms_output.put_line('sPI:' || sPI);

    --dbms_output.put_line('sValid:' || sValid);

    dbms_output.put_line('sName:' || sName);

end;

--定义Table变量类型

declare 

  type type_table_emp_empno is table of emp.empno%type index by binary_integer;

  empnos type_table_emp_empno;

begin

  empnos() := ;

  empnos() := ;

  empnos(-) := ;

  dbms_output.put_line(empnos(-));

end;

--定义record变量类型

declare

  type type_record_dept is record (

       deptno dept.deptno%type,

       dname dept.dname%type,

       loc dept.loc%type

  );

  temp type_record_dept;

begin

  temp.deptno := ;

  temp.dname := 'software';

  temp.loc := 'gz';

  dbms_output.put_line(temp.deptno || ' ' || temp.dname  || ' ' || temp.loc);

end;

--使用rowtype声明record变量

declare

  temp dept%rowtype;

begin

  temp.deptno := ;

  temp.dname := 'it';

  temp.loc := 'sz';

  dbms_output.put_line(temp.deptno || ' ' || temp.dname  || ' ' || temp.loc);

end;

--sql语句完成变量赋值

declare

  v$sal emp.sal%type;

  v$ename emp.ename%type;

begin

  select sal, ename into v$sal, v$ename from emp where rownum = ;

  dbms_output.put_line(v$sal || ' ' || v$ename);

end;

--sql语句完成rowtype变量赋值

declare

  v_row_emp emp%rowtype;

begin

  select * into v_row_emp from emp where empno = ;

  dbms_output.put_line(v_row_emp.sal || ' ' || v_row_emp.ename);

end;

--sql语句完成变量插入数据

create table dept2 as select * from dept;

declare

   deptno dept.deptno%type := ;

   dname dept.dname%type := 'software';

   loc dept.loc%type := 'gz';

begin

    insert into dept2 values(deptno, dname, loc);

      commit;

end;

select * from dept2;

code sql

链接:http://www.cnblogs.com/hoojo/archive/2011/05/03/2035335.html

Oracle垃圾回收清理

在10g中bin开头表示已经删除的放在回收站的表,oracle在删除表时并没有彻底的删除,而是把表放入回收站!purge recyclebin清空回收站即可。

★recyclebin字典★

当误删除某些表时,可以通过命令恢复回来:
flashback table table_name to before drop; 查看是否开启了闪回功能:
select flashback_on from v$database; 如果确定某些表确实可以删除,可以使用下面的语句,就不会出现BIN$开头的表了
drop table table_name purge; 删除Bin开头的表,即已经drop但存在于回收站中的表: 查询所有此类表
SQL> select * from recyclebin where type='TABLE'; 用来删除回收站中所有的表
SQL> PURGE RECYCLEBIN -------这语句就能清除所有以BIN开头的残留文件 用来删除指定的表
SQL> PURGE TABLE TABLE_NAME 用来闪回被删除的表
SQL> FLASHBACK TABLE table_name TO BEFORE DROP; 可以在的Drop表时不产生Bin型表
SQL> DROP TABLE "TableName" purge; 设置falshback功能的开启和关闭
SQL>startup mount
SQL>alter database flashback on(off)

Oracle正斜杠(/)的作用

正斜杠(/):在Oracle中,用来终止SQL语句。更准确的说,是表示了“运行现在位于缓冲区的SQL代码”。正斜杠也用作分隔项。

例如:执行以下语句

CREATE TABLE TEMP

( AAA VARCHAR2(2 BYTE),

    BBB VARCHAR2(2 BYTE)

)

Insert into TEMP (AAA,BBB) values ('TESTA','TESTB');

就会报错: TABLE OR VIEW DOES NOT EXIST。

在INSERT 语句之前加入正斜杠/即可。

----------------------------------------------------
在pl/sql中
;是语句结束
/是执行语句
先要输入set serveroutput on一句,并用匿名块写法才可以出结果
例子:
set serveroutput on
declare
....
begin
...
dbms_output.put_line(...);
end;
/

Oracle 查看剩余表空间

SELECT F.TABLESPACE_NAME,
(T.TOTAL_SPACE - F.FREE_SPACE) "USED (MB)",
F.FREE_SPACE "FREE (MB)",
T.TOTAL_SPACE "TOTAL (MB)",
(ROUND((F.FREE_SPACE / T.TOTAL_SPACE) * )) || '% ' PER_FREE
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BLOCKS *
(SELECT VALUE /
FROM V$PARAMETER
WHERE NAME = 'db_block_size') / )) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT TABLESPACE_NAME, ROUND(SUM(BYTES / )) TOTAL_SPACE
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) T
WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME ---------------------------------------------------------- SELECT sum(BYTES///) g FROM user_segments
SELECT segment_name AS TABLENAME, BYTES///
FROM user_segments; -----------------------------------------------------------------