精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
今天做个行列转换 找到的好语句 解决了我的问题
*
说明:复制表(只复制结构,源表名:a 新表名:b)
select
*
into
b
from
a
where
1
<>
1
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
说明:拷贝表(拷贝数据,源表名:a 目标表名:b)
insert
into
b(a, b, c)
select
d,e,f
from
b;
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
说明:显示文章、提交人和最后回复时间
select
a.title,a.username,b.adddate
from
table
a,(
select
max
(adddate) adddate
from
table
where
table
.title
=
a.title) b
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
说明:外连接查询(表名1:a 表名2:b)
select
a.a, a.b, a.c, b.c, b.d, b.f
from
a
LEFT
OUT
JOIN
b
ON
a.a
=
b.c
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
说明:日程安排提前五分钟提醒
select
*
from
日程安排
where
datediff
(
'
minute
'
,f开始时间,
getdate
())
>
5
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
说明:两张关联表,删除主表中已经在副表中没有的信息
delete
from
info
where
not
exists
(
select
*
from
infobz
where
info.infid
=
infobz.infid )
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
说明:
--
SQL:
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SELECT
A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
FROM
TABLE1,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
(
SELECT
X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
FROM
(
SELECT
NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
FROM
TABLE2
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
WHERE
TO_CHAR(UPD_DATE,
'
YYYY/MM
'
)
=
TO_CHAR(SYSDATE,
'
YYYY/MM
'
)) X,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
(
SELECT
NUM, UPD_DATE, STOCK_ONHAND
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
FROM
TABLE2
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
WHERE
TO_CHAR(UPD_DATE,
'
YYYY/MM
'
)
=
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
TO_CHAR(TO_DATE(TO_CHAR(SYSDATE,
'
YYYY/MM
'
)
||
'
/01
'
,
'
YYYY/MM/DD
'
)
-
1
,
'
YYYY/MM
'
) ) Y,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
WHERE
X.NUM
=
Y.NUM (
+
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
AND
X.INBOUND_QTY
+
NVL(Y.STOCK_ONHAND,
0
)
<>
X.STOCK_ONHAND ) B
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
WHERE
A.NUM
=
B.NUM
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
说明:
--
select
*
from
studentinfo
where
not
exists
(
select
*
from
student
where
studentinfo.id
=
student.id)
and
系名称
=
'
"&strdepartmentname&"
'
and
专业名称
=
'
"&strprofessionname&"
'
order
by
性别,生源地,高考总成绩
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SELECT
a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate,
'
yyyy
'
)
AS
telyear,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SUM
(decode(TO_CHAR(a.telfeedate,
'
mm
'
),
'
01
'
, a.factration))
AS
JAN,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SUM
(decode(TO_CHAR(a.telfeedate,
'
mm
'
),
'
02
'
, a.factration))
AS
FRI,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SUM
(decode(TO_CHAR(a.telfeedate,
'
mm
'
),
'
03
'
, a.factration))
AS
MAR,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SUM
(decode(TO_CHAR(a.telfeedate,
'
mm
'
),
'
04
'
, a.factration))
AS
APR,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SUM
(decode(TO_CHAR(a.telfeedate,
'
mm
'
),
'
05
'
, a.factration))
AS
MAY,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SUM
(decode(TO_CHAR(a.telfeedate,
'
mm
'
),
'
06
'
, a.factration))
AS
JUE,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SUM
(decode(TO_CHAR(a.telfeedate,
'
mm
'
),
'
07
'
, a.factration))
AS
JUL,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SUM
(decode(TO_CHAR(a.telfeedate,
'
mm
'
),
'
08
'
, a.factration))
AS
AGU,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SUM
(decode(TO_CHAR(a.telfeedate,
'
mm
'
),
'
09
'
, a.factration))
AS
SEP,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SUM
(decode(TO_CHAR(a.telfeedate,
'
mm
'
),
'
10
'
, a.factration))
AS
OCT,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SUM
(decode(TO_CHAR(a.telfeedate,
'
mm
'
),
'
11
'
, a.factration))
AS
NOV,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SUM
(decode(TO_CHAR(a.telfeedate,
'
mm
'
),
'
12
'
, a.factration))
AS
DEC
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
FROM
(
SELECT
a.userper, a.tel, a.standfee, b.telfeedate, b.factration
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
FROM
TELFEESTAND a, TELFEE b
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
WHERE
a.tel
=
b.telfax) a
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
GROUP
BY
a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate,
'
yyyy
'
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
说明:四表联查问题
select
*
from
a
left
inner
join
b
on
a.a
=
b.b
right
inner
join
c
on
a.a
=
c.c
inner
join
d
on
a.a
=
d.d
where
..
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
说明:得到表中最小的未使用的ID号
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
SELECT
(
CASE
WHEN
EXISTS
(
SELECT
*
FROM
Handle b
WHERE
b.HandleID
=
1
)
THEN
MIN
(HandleID)
+
1
ELSE
1
END
)
as
HandleID
FROM
Handle
WHERE
NOT
HandleID
IN
(
SELECT
a.HandleID
-
1
FROM
Handle a)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
一个SQL语句的问题:行列转换
select
*
from
v_temp
上面的视图结果如下:
user_name
role_name
--
-----------------------
系统管理员 管理员
feng 管理员
feng 一般用户
test 一般用户
想把结果变成这样:
user_name
role_name
--
-------------------------
系统管理员 管理员
feng 管理员,一般用户
test 一般用户
===================
create
table
a_test(name
varchar
(
20
),role2
varchar
(
20
))
insert
into
a_test
values
(
'
李
'
,
'
管理员
'
)
insert
into
a_test
values
(
'
张
'
,
'
管理员
'
)
insert
into
a_test
values
(
'
张
'
,
'
一般用户
'
)
insert
into
a_test
values
(
'
常
'
,
'
一般用户
'
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
create
function
join_str(
@content
varchar
(
100
))
returns
varchar
(
2000
)
as
begin
declare
@str
varchar
(
2000
)
set
@str
=
''
select
@str
=
@str
+
'
,
'
+
rtrim
(role2)
from
a_test
where
[
name
]
=
@content
select
@str
=
right
(
@str
,
len
(
@str
)
-
1
)
return
@str
end
go
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
--
调用:
select
[
name
]
,dbo.join_str(
[
name
]
) role2
from
a_test
group
by
[
name
]
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
--
select distinct name,dbo.uf_test(name) from a_test
*
快速比较结构相同的两表
结构相同的两表,一表有记录3万条左右,一表有记录2万条左右,我怎样快速查找两表的不同记录?
============================
给你一个测试方法,从northwind中的orders表取数据。
select
*
into
n1
from
orders
select
*
into
n2
from
orders
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
select
*
from
n1
select
*
from
n2
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
--
添加主键,然后修改n1中若干字段的若干条
alter
table
n1
add
constraint
pk_n1_id
primary
key
(OrderID)
alter
table
n2
add
constraint
pk_n2_id
primary
key
(OrderID)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
select
OrderID
from
(
select
*
from
n1
union
select
*
from
n2) a
group
by
OrderID
having
count
(
*
)
>
1
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
应该可以,而且将不同的记录的ID显示出来。
下面的适用于双方记录一样的情况,
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
select
*
from
n1
where
orderid
in
(
select
OrderID
from
(
select
*
from
n1
union
select
*
from
n2) a
group
by
OrderID
having
count
(
*
)
>
1
)
至于双方互不存在的记录是比较好处理的
--
删除n1,n2中若干条记录
delete
from
n1
where
orderID
in
(
'
10728
'
,
'
10730
'
)
delete
from
n2
where
orderID
in
(
'
11000
'
,
'
11001
'
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
--
*************************************************************
--
双方都有该记录却不完全相同
select
*
from
n1
where
orderid
in
(
select
OrderID
from
(
select
*
from
n1
union
select
*
from
n2) a
group
by
OrderID
having
count
(
*
)
>
1
)
union
--
n2中存在但在n1中不存的在10728,10730
select
*
from
n1
where
OrderID
not
in
(
select
OrderID
from
n2)
union
--
n1中存在但在n2中不存的在11000,11001
select
*
from
n2
where
OrderID
not
in
(
select
OrderID
from
n1)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
四种方法取表里n到m条纪录:
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
1
.
select
top
m
*
into
临时表(或表变量)
from
tablename
order
by
columnname
--
将top m笔插入
set
rowcount
n
select
*
from
表变量
order
by
columnname
desc
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
2
.
select
top
n
*
from
(
select
top
m
*
from
tablename
order
by
columnname) a
order
by
columnname
desc
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
3
.如果tablename里没有其他identity列,那么:
select
identity
(
int
) id0,
*
into
#
temp
from
tablename
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
取n到m条的语句为:
select
*
from
#
temp
where
id0
>=
n
and
id0
<=
m
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
如果你在执行select
identity
(
int
) id0,
*
into
#
temp
from
tablename这条语句的时候报错,那是因为你的DB中间的select
into
/
bulkcopy属性没有打开要先执行:
exec
sp_dboption 你的DB名字,
'
select into/bulkcopy
'
,true
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
4
.如果表里有identity属性,那么简单:
select
*
from
tablename
where
identitycol
between
n
and
m
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
如何删除一个表中重复的记录?
create
table
a_dist(id
int
,name
varchar
(
20
))
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
insert
into
a_dist
values
(
1
,
'
abc
'
)
insert
into
a_dist
values
(
1
,
'
abc
'
)
insert
into
a_dist
values
(
1
,
'
abc
'
)
insert
into
a_dist
values
(
1
,
'
abc
'
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
exec
up_distinct
'
a_dist
'
,
'
id
'
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
select
*
from
a_dist
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
create
procedure
up_distinct(
@t_name
varchar
(
30
),
@f_key
varchar
(
30
))
--
f_key表示是分组字段﹐即主键字段
as
begin
declare
@max
integer
,
@id
varchar
(
30
) ,
@sql
varchar
(
7999
) ,
@type
integer
select
@sql
=
'
declare cur_rows cursor for select
'
+
@f_key
+
'
,count(*) from
'
+
@t_name
+
'
group by
'
+
@f_key
+
'
having count(*) > 1
'
exec
(
@sql
)
open
cur_rows
fetch
cur_rows
into
@id
,
@max
while
@@fetch_status
=
0
begin
select
@max
=
@max
-
1
set
rowcount
@max
select
@type
=
xtype
from
syscolumns
where
id
=
object_id
(
@t_name
)
and
name
=
@f_key
if
@type
=
56
select
@sql
=
'
delete from
'
+
@t_name
+
'
where
'
+
@f_key
+
'
=
'
+
@id
if
@type
=
167
select
@sql
=
'
delete from
'
+
@t_name
+
'
where
'
+
@f_key
+
'
=
'
+
''''
+
@id
+
''''
exec
(
@sql
)
fetch
cur_rows
into
@id
,
@max
end
close
cur_rows
deallocate
cur_rows
set
rowcount
0
end
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
select
*
from
systypes
select
*
from
syscolumns
where
id
=
object_id
(
'
a_dist
'
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
查询数据的最大排序问题(只能用一条语句写)
CREATE
TABLE
hard (qu
char
(
11
) ,co
char
(
11
) ,je numeric(
3
,
0
))
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
insert
into
hard
values
(
'
A
'
,
'
1
'
,
3
)
insert
into
hard
values
(
'
A
'
,
'
2
'
,
4
)
insert
into
hard
values
(
'
A
'
,
'
4
'
,
2
)
insert
into
hard
values
(
'
A
'
,
'
6
'
,
9
)
insert
into
hard
values
(
'
B
'
,
'
1
'
,
4
)
insert
into
hard
values
(
'
B
'
,
'
2
'
,
5
)
insert
into
hard
values
(
'
B
'
,
'
3
'
,
6
)
insert
into
hard
values
(
'
C
'
,
'
3
'
,
4
)
insert
into
hard
values
(
'
C
'
,
'
6
'
,
7
)
insert
into
hard
values
(
'
C
'
,
'
2
'
,
3
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
要求查询出来的结果如下:
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
qu co je
--
--------- ----------- -----
A
6
9
A
2
4
B
3
6
B
2
5
C
6
7
C
3
4
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
就是要按qu分组,每组中取je最大的前2位!!
而且只能用一句sql语句!!!
select
*
from
hard a
where
je
in
(
select
top
2
je
from
hard b
where
a.qu
=
b.qu
order
by
je)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
求删除重复记录的sql语句?
怎样把具有相同字段的纪录删除,只留下一条。
例如,表test里有id,name字段
如果有name相同的记录 只留下一条,其余的删除。
name的内容不定,相同的记录数不定。
有没有这样的sql语句?
==============================
A:一个完整的解决方案:
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
将重复的记录记入temp1表:
select
[
标志字段id
]
,
count
(
*
)
into
temp1
from
[
表名
]
group
by
[
标志字段id
]
having
count
(
*
)
>
1
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
2
、将不重复的记录记入temp1表:
insert
temp1
select
[
标志字段id
]
,
count
(
*
)
from
[
表名
]
group
by
[
标志字段id
]
having
count
(
*
)
=
1
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
3
、作一个包含所有不重复记录的表:
select
*
into
temp2
from
[
表名
]
where
标志字段id
in
(
select
标志字段id
from
temp1)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
4
、删除重复表:
delete
[
表名
]
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
5
、恢复表:
insert
[
表名
]
select
*
from
temp2
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
6
、删除临时表:
drop
table
temp1
drop
table
temp2
================================
B:
create
table
a_dist(id
int
,name
varchar
(
20
))
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
insert
into
a_dist
values
(
1
,
'
abc
'
)
insert
into
a_dist
values
(
1
,
'
abc
'
)
insert
into
a_dist
values
(
1
,
'
abc
'
)
insert
into
a_dist
values
(
1
,
'
abc
'
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
exec
up_distinct
'
a_dist
'
,
'
id
'
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
select
*
from
a_dist
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
create
procedure
up_distinct(
@t_name
varchar
(
30
),
@f_key
varchar
(
30
))
--
f_key表示是分组字段﹐即主键字段
as
begin
declare
@max
integer
,
@id
varchar
(
30
) ,
@sql
varchar
(
7999
) ,
@type
integer
select
@sql
=
'
declare cur_rows cursor for select
'
+
@f_key
+
'
,count(*) from
'
+
@t_name
+
'
group by
'
+
@f_key
+
'
having count(*) > 1
'
exec
(
@sql
)
open
cur_rows
fetch
cur_rows
into
@id
,
@max
while
@@fetch_status
=
0
begin
select
@max
=
@max
-
1
set
rowcount
@max
select
@type
=
xtype
from
syscolumns
where
id
=
object_id
(
@t_name
)
and
name
=
@f_key
if
@type
=
56
select
@sql
=
'
delete from
'
+
@t_name
+
'
where
'
+
@f_key
+
'
=
'
+
@id
if
@type
=
167
select
@sql
=
'
delete from
'
+
@t_name
+
'
where
'
+
@f_key
+
'
=
'
+
''''
+
@id
+
''''
exec
(
@sql
)
fetch
cur_rows
into
@id
,
@max
end
close
cur_rows
deallocate
cur_rows
set
rowcount
0
end
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
select
*
from
systypes
select
*
from
syscolumns
where
id
=
object_id
(
'
a_dist
'
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
行列转换
--
普通
假设有张学生成绩表(CJ)如下
Name Subject Result
张三 语文
80
张三 数学
90
张三 物理
85
李四 语文
85
李四 数学
92
李四 物理
82
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
想变成
姓名 语文 数学 物理
张三
80
90
85
李四
85
92
82
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
declare
@sql
varchar
(
4000
)
set
@sql
=
'
select Name
'
select
@sql
=
@sql
+
'
,sum(case Subject when
'''
+
Subject
+
'''
then Result end) [
'
+
Subject
+
'
]
'
from
(
select
distinct
Subject
from
CJ)
as
a
select
@sql
=
@sql
+
'
from test group by name
'
exec
(
@sql
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
行列转换
--
合并
有表A,
id pid
1
1
1
2
1
3
2
1
2
2
3
1
如何化成表B:
id pid
1
1
,
2
,
3
2
1
,
2
3
1
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
创建一个合并的函数
create
function
fmerg(
@id
int
)
returns
varchar
(
8000
)
as
begin
declare
@str
varchar
(
8000
)
set
@str
=
''
select
@str
=
@str
+
'
,
'
+
cast
(pid
as
varchar
)
from
表A
where
id
=
@id
set
@str
=
right
(
@str
,
len
(
@str
)
-
1
)
return
(
@str
)
End
go
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
--
调用自定义函数得到结果
select
distinct
id,dbo.fmerg(id)
from
表A
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
如何取得一个数据表的所有列名
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
方法如下:先从SYSTEMOBJECT系统表中取得数据表的SYSTEMID,然后再SYSCOLUMN表中取得该数据表的所有列名。
SQL语句如下:
declare
@objid
int
,
@objname
char
(
40
)
set
@objname
=
'
tablename
'
select
@objid
=
id
from
sysobjects
where
id
=
object_id
(
@objname
)
select
'
Column_name
'
=
name
from
syscolumns
where
id
=
@objid
order
by
colid
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
或
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SELECT
*
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME
=
'
users
'
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
通过SQL语句来更改用户的密码
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
修改别人的,需要sysadmin role
EXEC
sp_password
NULL
,
'
newpassword
'
,
'
User
'
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
如果帐号为SA执行EXEC sp_password
NULL
,
'
newpassword
'
, sa
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
怎么判断出一个表的哪些字段不允许为空?
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
select
COLUMN_NAME
from
INFORMATION_SCHEMA.COLUMNS
where
IS_NULLABLE
=
'
NO
'
and
TABLE_NAME
=
tablename
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
如何在数据库里找到含有相同字段的表?
a. 查已知列名的情况
SELECT
b.name
as
TableName,a.name
as
columnname
From
syscolumns a
INNER
JOIN
sysobjects b
ON
a.id
=
b.id
AND
b.type
=
'
U
'
AND
a.name
=
'
你的字段名字
'
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
未知列名查所有在不同表出现过的列名
Select
o.name
As
tablename,s1.name
As
columnname
From
syscolumns s1, sysobjects o
Where
s1.id
=
o.id
And
o.type
=
'
U
'
And
Exists
(
Select
1
From
syscolumns s2
Where
s1.name
=
s2.name
And
s1.id
<>
s2.id
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
查询第xxx行数据
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
假设id是主键:
select
*
from
(
select
top
xxx
*
from
yourtable) aa
where
not
exists
(
select
1
from
(
select
top
xxx
-
1
*
from
yourtable) bb
where
aa.id
=
bb.id)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
如果使用游标也是可以的
fetch
absolute
[
number
]
from
[
cursor_name
]
行数为绝对行数
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
SQL Server日期计算
a. 一个月的第一天
SELECT
DATEADD
(mm,
DATEDIFF
(mm,
0
,
getdate
()),
0
)
b. 本周的星期一
SELECT
DATEADD
(wk,
DATEDIFF
(wk,
0
,
getdate
()),
0
)
c. 一年的第一天
SELECT
DATEADD
(yy,
DATEDIFF
(yy,
0
,
getdate
()),
0
)
d. 季度的第一天
SELECT
DATEADD
(qq,
DATEDIFF
(qq,
0
,
getdate
()),
0
)
e. 上个月的最后一天
SELECT
dateadd
(ms,
-
3
,
DATEADD
(mm,
DATEDIFF
(mm,
0
,
getdate
()),
0
))
f. 去年的最后一天
SELECT
dateadd
(ms,
-
3
,
DATEADD
(yy,
DATEDIFF
(yy,
0
,
getdate
()),
0
))
g. 本月的最后一天
SELECT
dateadd
(ms,
-
3
,
DATEADD
(mm,
DATEDIFF
(m,
0
,
getdate
())
+
1
,
0
))
h. 本月的第一个星期一
select
DATEADD
(wk,
DATEDIFF
(wk,
0
,
dateadd
(dd,
6
-
datepart
(
day
,
getdate
()),
getdate
())
),
0
)
i. 本年的最后一天
SELECT
dateadd
(ms,
-
3
,
DATEADD
(yy,
DATEDIFF
(yy,
0
,
getdate
())
+
1
,
0
))。
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
获取表结构
[
把 'sysobjects' 替换 成 'tablename' 即可
]
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SELECT
CASE
IsNull
(I.name,
''
)
When
''
Then
''
Else
'
*
'
End
as
IsPK,
Object_Name
(A.id)
as
t_name,
A.name
as
c_name,
IsNull
(
SubString
(M.
text
,
1
,
254
),
''
)
as
pbc_init,
T.name
as
F_DataType,
CASE
IsNull
(
TYPEPROPERTY
(T.name,
'
Scale
'
),
''
)
WHEN
''
Then
Cast
(A.prec
as
varchar
)
ELSE
Cast
(A.prec
as
varchar
)
+
'
,
'
+
Cast
(A.scale
as
varchar
)
END
as
F_Scale,
A.isnullable
as
F_isNullAble
FROM
Syscolumns
as
A
JOIN
Systypes
as
T
ON
(A.xType
=
T.xUserType
AND
A.Id
=
Object_id
(
'
sysobjects
'
) )
LEFT
JOIN
( SysIndexes
as
I
JOIN
Syscolumns
as
A1
ON
( I.id
=
A1.id
and
A1.id
=
object_id
(
'
sysobjects
'
)
and
(I.status
&
0x800
)
=
0x800
AND
A1.colid
<=
I.keycnt) )
ON
( A.id
=
I.id
AND
A.name
=
index_col
(
'
sysobjects
'
, I.indid, A1.colid) )
LEFT
JOIN
SysComments
as
M
ON
( M.id
=
A.cdefault
and
ObjectProperty
(A.cdefault,
'
IsConstraint
'
)
=
1
)
ORDER
BY
A.Colid
ASC
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
提取数据库内所有表的字段详细说明的SQL语句
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SELECT
(
case
when
a.colorder
=
1
then
d.name
else
''
end
) N
'
表名
'
,
a.colorder N
'
字段序号
'
,
a.name N
'
字段名
'
,
(
case
when
COLUMNPROPERTY
( a.id,a.name,
'
IsIdentity
'
)
=
1
then
'
√
'
else
''
end
) N
'
标识
'
,
(
case
when
(
SELECT
count
(
*
)
FROM
sysobjects
WHERE
(name
in
(
SELECT
name
FROM
sysindexes
WHERE
(id
=
a.id)
AND
(indid
in
(
SELECT
indid
FROM
sysindexkeys
WHERE
(id
=
a.id)
AND
(colid
in
(
SELECT
colid
FROM
syscolumns
WHERE
(id
=
a.id)
AND
(name
=
a.name)))))))
AND
(xtype
=
'
PK
'
))
>
0
then
'
√
'
else
''
end
) N
'
主键
'
,
b.name N
'
类型
'
,
a.length N
'
占用字节数
'
,
COLUMNPROPERTY
(a.id,a.name,
'
PRECISION
'
)
as
N
'
长度
'
,
isnull
(
COLUMNPROPERTY
(a.id,a.name,
'
Scale
'
),
0
)
as
N
'
小数位数
'
,
(
case
when
a.isnullable
=
1
then
'
√
'
else
''
end
) N
'
允许空
'
,
isnull
(e.
text
,
''
) N
'
默认值
'
,
isnull
(g.
[
value
]
,
''
)
AS
N
'
字段说明
'
FROM
syscolumns a
left
join
systypes b
on
a.xtype
=
b.xusertype
inner
join
sysobjects d
on
a.id
=
d.id
and
d.xtype
=
'
U
'
and
d.name
<>
'
dtproperties
'
left
join
syscomments e
on
a.cdefault
=
e.id
left
join
sysproperties g
on
a.id
=
g.id
AND
a.colid
=
g.smallid
order
by
object_name
(a.id),a.colorder
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
快速获取表test的记录总数
[
对大容量表非常有效
]
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
快速获取表test的记录总数:
select
rows
from
sysindexes
where
id
=
object_id
(
'
test
'
)
and
indid
in
(
0
,
1
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
update
2
set
KHXH
=
(ID
+
1
)\
2
2行递增编号
update
[
23
]
set
id1
=
'
No.
'
+
right
(
'
00000000
'
+
id,
6
)
where
id
not
like
'
No%
'
//
递增
update
[
23
]
set
id1
=
'
No.
'
+
right
(
'
00000000
'
+
replace
(id1,
'
No.
'
,
''
),
6
)
//
补位递增
delete
from
[
1
]
where
(id
%
2
)
=
1
奇数
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
替换表名字段
update
[
1
]
set
domurl
=
replace
(domurl,
'
Upload/Imgswf/
'
,
'
Upload/Photo/
'
)
where
domurl
like
'
%Upload/Imgswf/%
'
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
*
截位
SELECT
LEFT
(表名,
5
)
熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact
-
SQL语句进行导入导出操作。在 Transact
-
SQL语句中,我们主要使用OpenDataSource函数、
OPENROWSET
函数,关于函数的详细说明,请参考SQL联机帮助。利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下:
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
一、SQL SERVER 和ACCESS的数据导入导出
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
常规的数据导入导出:
使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤:
○1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation
○2Services(数据转换服务),然后选择 czdImport Data(导入数据)。
○3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access
as
the Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。
○4在Choose a Destination(选择目标)对话框中,选择Microsoft OLE DB Prov ider
for
SQL Server,选择数据库服务器,然后单击必要的验证方式。
○5在Specify
Table
Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables(复制表格)。
○6在Select Source Tables(选择源表格)对话框中,单击Select
All
(全部选定)。下一步,完成。
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
Transact
-
SQL语句进行导入导出:
1
.在SQL SERVER里查询access数据:
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SELECT
*
FROM
OpenDataSource
(
'
Microsoft.Jet.OLEDB.4.0
'
,
'
Data Source="c:\DB.mdb";User ID=Admin;Password=
'
)
表名
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
2
.将access导入SQL server
在SQL SERVER 里运行:
SELECT
*
INTO
newtable
FROM
OPENDATASOURCE
(
'
Microsoft.Jet.OLEDB.4.0
'
,
'
Data Source="c:\DB.mdb";User ID=Admin;Password=
'
)
表名
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
3
.将SQL SERVER表里的数据插入到Access表中
在SQL SERVER 里运行:
insert
into
OpenDataSource
(
'
Microsoft.Jet.OLEDB.4.0
'
,
'
Data Source=" c:\DB.mdb";User ID=Admin;Password=
'
)
表名 (列名1,列名2)
select
列名1,列名2
from
sql表
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
实例:
insert
into
OPENROWSET
(
'
Microsoft.Jet.OLEDB.4.0
'
,
'
C:\db.mdb
'
;
'
admin
'
;
''
, Test)
select
id,name
from
Test
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
INSERT
INTO
OPENROWSET
(
'
Microsoft.Jet.OLEDB.4.0
'
,
'
c:\trade.mdb
'
;
'
admin
'
;
''
, 表名)
SELECT
*
FROM
sqltablename
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
二、SQL SERVER 和EXCEL的数据导入导出
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
1
、在SQL SERVER里查询Excel数据:
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
SELECT
*
FROM
OpenDataSource
(
'
Microsoft.Jet.OLEDB.4.0
'
,
'
Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0
'
)
[
Sheet1$
]
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
SELECT
*
FROM
OpenDataSource
(
'
Microsoft.Jet.OLEDB.4.0
'
,
'
Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0
'
)
xactions
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
2
、将Excel的数据导入SQL server :
SELECT
*
into
newtable
FROM
OpenDataSource
(
'
Microsoft.Jet.OLEDB.4.0
'
,
'
Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0
'
)
[
Sheet1$
]
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
实例:
SELECT
*
into
newtable
FROM
OpenDataSource
(
'
Microsoft.Jet.OLEDB.4.0
'
,
'
Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0
'
)
xactions
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
3
、将SQL SERVER中查询到的数据导成一个Excel文件
T
-
SQL代码:
EXEC
master..xp_cmdshell
'
bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""
'
参数:S 是SQL服务器名;U是用户;P是密码
说明:还可以导出文本文件等多种格式
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
实例:
EXEC
master..xp_cmdshell
'
bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"
'
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
EXEC
master..xp_cmdshell
'
bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword
'
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
在VB6中应用ADO导出EXCEL文件代码:
Dim cn
As
New ADODB.Connection
cn.
open
"Driver
=
{SQL Server};Server
=
WEBSVR;
DataBase
=
WebMis;UID
=
sa;WD
=
123
;"
cn.
execute
"master..xp_cmdshell
'
bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword
'
"
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
4
、在SQL SERVER里往Excel插入数据:
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
insert
into
OpenDataSource
(
'
Microsoft.Jet.OLEDB.4.0
'
,
'
Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0
'
)
table1 (A1,A2,A3)
values
(
1
,
2
,
3
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
T
-
SQL代码:
INSERT
INTO
OPENDATASOURCE
(
'
Microsoft.JET.OLEDB.4.0
'
,
'
Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls
'
)
[
Filiale1$
]
(bestand, produkt)
VALUES
(
20
,
'
Test
'
)
![精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzMvOC83LzUvOTAvNzMxNjU1OTU0YzdiZTlkODgzNWVjZTU1MWI1Mzg1ZjguanBl.jpe?w=700&webp=1)
总结:利用以上语句,我们可以方便地将SQL SERVER、ACCESS和EXCEL电子表格软件中的数据进行转换,为我们提供了极大方便!