sql实战

sql常用语句20


信息来源 业绩快报

 select B.GPDM  证券代码,B.ZQJC 证券简称 ,A.XXFBRQ 信息发布日期,A.XXLY 信息来源
FROM usrGSCWZBFXFB A 
JOIN usrZQZB B ON A.IGSDM=B.IGSDM AND B.ZQLB IN (1,2) AND B.ZQSC IN (83,90)
WHERE A.ZYYWSR IS NULL
AND A.T_1ZYYWSR IS NOT NULL

连接数据库-大python

import pymssql
conn = pymssql.connect(server="10.101.0.201",user="DataCenter_Read",password="ter#CenD89",database="JYPRIME")
import pandas as pd
sql=" "
df0 = pd.read_sql(sql,conn)
df=pd.DataFrame(df0)
df.head(3) 

匹配数据库常量

SELECT A.TABLENAME,A.TABLENAMECHN,B.*  FROM cmdTABLES A with(nolock) JOIN cmdCOLUMNS B with(nolock) ON B.TABLEID = A.TABLEID WHERE A.TABLENAME='usrGSGBJG' 

从表去查数据

select B.GPDM,A.ZQJC,C.* FROM 
usrZQZB B,usrXGFXYSS A,usrXGFXYSS_SL C
WHERE A.INBBM=B.INBBM 
AND B.SSBZ=7 
AND  A.ID=C.ID 
AND B.GPDM <> C.DM 
and B.GPDM NOT LIKE '%X%' 
AND B.GPDM NOT LIKE '%C%'
AND LB=4

查所有从表

select * from usrGSYWYHYGG_SL

提取3天内的数据 - -股本结构

SELECT B.GPDM  证券代码,B.ZQJC 证券简称 ,
A.JZRQ 截止日期 , A.ZGB 总股本, A.SJSSGSYLTAG 流通A ,
A.YXSGF 有限售 , A.XXFBRQ 信息发布日期 , A.GBBDYYLB 股本变动类型
FROM usrGSGBJG A  
JOIN usrZQZB B ON A.IGSDM=B.IGSDM AND B.ZQLB IN (1,2) AND B.ZQSC IN (83,90)
WHERE  A.XXFBRQ BETWEEN GETDATE()-4 AND GETDATE()
  AND A.GBBDYYLB IN (82,80,24,25,75,90)
order by XXFBRQ desc 

ts

select * from JYPRIME..usrGSJYLDRGFBD WHERE ID IN (643751571859,643751571857)
麻烦看下,下游报重复值
SELECT *
FROM JYPRIME..usrGSJYLDRGFBD
WHERE GKBZ = 3 and (
INBBM=5179 and BDRQ='2020-05-21 00:00:00.000' and GFBDRXM='王志良' and XH=8
or
INBBM=5179 and BDRQ='2020-05-21 00:00:00.000' and GFBDRXM='盛瑞生' and XH=11
or 
INBBM=5179 and BDRQ='2020-05-21 00:00:00.000' and GFBDRXM='谢永林' and XH=7
)

我写的代码

△申报稿证券主表查漏
 上市状态 申报稿期间是9,上交所是83,证券类型是A-1
 ★申报稿 - 证券主表
select GPDM  证券代码,ZWMCSX 中文名称缩写 ,ZQJC 证券简称 ,PYZQJC	拼音证券简称,SSZT	上市状态,ZQSC	证券市场, ZQLB	证券类别,
XGSJ 发布时间,
FBSJ 修改时间
FROM usrZQZB  
WHERE  XGSJ BETWEEN GETDATE()-2  AND GETDATE() 
AND SSZT = 9 
AND GPDM LIKE 'X%' 





△申报稿公司概况查漏
 申报稿 - 公司概况
 主要查询人员(法人代表、董秘、证券代表)、电话、传真、网址



SELECT B.GPDM  证券代码,B.ZQJC 证券简称 ,
GSCLRQ	公司成立日期,
A.BGSLRQ	变更设立日期,
A.SCZCDJDD	首次注册登记地点,
A.QYFRYYZZZCH	企业法人营业执照注册号,
A.FRDB	法人代表,
A.DSHMS	董事会秘书,
A.DMSQDB	董秘授权代表,
A.ZQSWDB	证券股证事务代表,
A.ZQSWDBDH	证券事务代表电话,
A.ZQSWDBCZ	证券事务代表传真,
A.ZQSWDBDZYJ	证券事务代表电子邮件,
A.LXRDH	联系人电话,
A.LXRCZ	联系人传真,
A.LXRDZYJ	联系人电邮,
A.DMLXDH	董秘电话,
A.DMCZ	董秘传真,
A.DMDZYJ	董秘电子邮件,
A.DMSQDB	董秘授权代表,
A.ZQSWDB	证券股证事务代表,
A.GSLXDZDZYJ	公司电子邮件,
A.GSWZ	公司网址,
A.GLWZ	关联网址,
A.GSZCDZ	公司注册地址,
A.GSZCDZYB	公司注册地址邮编,
A.FBSJ	发布时间
FROM usrGSGK A 
JOIN usrZQZB B ON A.IGSDM=B.IGSDM AND B.ZQLB IN (1,2) AND B.ZQSC IN (83,90)
WHERE    A.FBSJ  BETWEEN GETDATE()-4 AND GETDATE()
AND B.GPDM LIKE 'X%' 


△申报稿行业更改查漏
 申报稿 - 主营业务与产品经营业务与行业更改状况
 涉足行业左关联,附表SL
SELECT B.GPDM  证券代码,B.ZQJC 证券简称 ,
A.XXFBRQ	信息发布日期,
A.XXLY	信息来源,
A.ZY	经营范围,
A.ZYYW	主要业务,
A.ZYCPMC	主要产品与业务名称,
A.ZYCPJS	主要产品介绍,
A.HYFLBZ	行业分类标准,
A.HYLB	行业类别,
Z.*
 FROM usrGSYWYHYGG A  
JOIN usrZQZB B ON A.IGSDM=B.IGSDM AND B.ZQLB IN (1,2) AND B.ZQSC IN (83,90)
left JOIN  usrGSYWYHYGG_SL  Z ON  Z.ID = A.ID 
WHERE    A.XXFBRQ BETWEEN GETDATE()-4 AND GETDATE()
AND B.GPDM LIKE 'X%' 
--GPDM='X20166' 
order by GPDM DESC

---


SELECT A.TABLENAME,A.TABLENAMECHN,B.*  FROM cmdTABLES A with(nolock) JOIN cmdCOLUMNS B with(nolock) ON B.TABLEID = A.TABLEID WHERE A.TABLENAME='usrGSYWYHYGG_DL' 

分红意向
预案
决案



笔记

select
from
区别
	in
		如果结果集只有一个值时“=”等价于“IN” ,如果结果集有多个值时,IN 等价于 多个 “=”或。
		in('张三' ,'李四')
	as
	on
		on:生成临时表时使用的条件,无论条件是否生效,都会返回左表的行(left join性质影响)
	where
		where:生成临时表之后使用的条件,一定会过滤不满足设定条件的行
	and
	文本
		https://blog.csdn.net/tonydz0523/article/details/86484102
终端链接
	cmd: osql  ?/ 
		具体
			用法: osql                   [-U 登录 ID]          [-P 密码]
  [-S 服务器]                [-H 主机名]           [-E 可信连接]
  [-d 使用数据库名称]        [-l 登录超时值]       [-t 查询超时值]
  [-h 标题]                  [-s 列分隔符]         [-w 列宽]
  [-a 数据包大小]            [-e 回显输入]         [-I 允许带引号的标识符]
  [-L 列出服务器]            [-c 命令结束]         [-D ODBC DSN 名称]
  [-q "命令行查询"]          [-Q "命令行查询" 并退出]
  [-n 删除编号方式]          [-m 错误级别]
  [-r 发送到 stderr 的消息]  [-V 严重级别]
  [-i 输入文件]              [-o 输出文件]
  [-p 打印统计信息]          [-b 出错时中止批处理]
  [-X[1] 禁用命令,[退出的同时显示警告]]
  [-O 使用旧 ISQL 行为禁用下列项]
      <EOF> 批处理
      自动调整控制台宽度
      宽消息
      默认错误级别为 -1 和 1
  [-? 显示语法摘要]
			connect 服务器是-S,10.105.0.100
登陆ID是-U,GILDATA\wangjq
密码是-P ,
			运行 osql -S 【数据库服务器】 -U 【登陆用户名】 -P 【登陆密码】
1> 表示连接成功
密码是啥?》》》》》》
>osql -S  10.105.0.100 -U GILDATA\wangjq
出现 1> 表示连接成功,这时候你可以输入sql语句来进行操作了。
请记住在2>时输入GO,执行Sql语句

			10.1.5.121测试库
用户名:data_sjzx
密码:123qwe
osql -S  10.1.5.121 -U data_sjzx -P 123qwe -d jyprime
				
代码分成多行
	方法一
把分行的代码用小括号括起来:

test = (100+
       200)
print a

结果为300

方法二
用反斜杠连接多行代码,即在分行处用反斜杠连接:(注:个人觉得这种方法比较常用,算式和字符串均可使用)

test = 100 + \
       200
print a

结果为300

方法三
用三个单引号连接几行代码:(注:此方法仅适用于字符串哦)

test = '''100 + 
       200'''
print a
结果为100 + 200

可以看到这种方法输出为字符串类型

所以,方法三只用于hin长的字符串的分行

【Python教程】Jupyter Notebook把一段很长的代码分成多行的解决办法 
sql server+juno
	usrXTCLB 
常量表
		select  A.GPDM 公司代码,A.ZQJC 证券简称, 
B.XXFBRQ 信息发布日期,B.HPQYMC 获配企业名称,D.MS 获配企业性质,B.ID
from    usrGPPS B     
JOIN  usrZQZB A  ON  B.IGSDM=A.IGSDM AND   A.ZQLB IN (1,2) AND A.ZQSC IN (83,90) AND A.SSBZ IN (1,2,6,7) AND A.ZQJC NOT LIKE '%无效%'
JOIN  usrGPPS_SL C ON B.ID=C.ID AND C.LB=1 
JOIN usrXTCLB D ON D.LB=1026 AND D.DM=B.PSXZ
WHERE B.HPQYMC LIKE '%基金-%' AND B.HPQYMC LIKE '%资产管理%' AND B.HPQYMC NOT LIKE '%基金' AND C.DM<>21 AND B.PSYY=2 
	不用常量表
		select  A.GPDM 公司代码,A.ZQJC 证券简称, 
B.XXFBRQ 信息发布日期,B.HPQYMC 获配企业名称,C.DM 获配企业性质,B.ID
from    usrGPPS B     
JOIN  usrZQZB A  ON  B.IGSDM=A.IGSDM AND   A.ZQLB IN (1,2) AND A.ZQSC IN (83,90) AND A.SSBZ IN (1,2,6,7) AND A.ZQJC NOT LIKE '%无效%'
JOIN  usrGPPS_SL C ON B.ID=C.ID AND C.LB=1 
WHERE B.HPQYMC LIKE '%基金-%' AND B.HPQYMC LIKE '%资产管理%' AND B.HPQYMC NOT LIKE '%基金' AND C.DM<>21 AND B.PSYY=2 
	子主题 6
		表
		
		
		jydb 是最新的数据,属于 前台 使用。他们把数据整理之后卖出
		jyprime 数据每次修改,都会添加,不会删除数据,每次有改动,就会添加
		触发器  是后台使用的,就是 juno的底层逻辑
	规则
		细节
			匹配所有字段
				
SELECT A.TABLENAME,A.TABLENAMECHN,B.*
FROM cmdTABLES A
JOIN cmdCOLUMNS B ON B.TABLEID = A.TABLEID
WHERE A.TABLENAME='usrGPPS'

			sql 2分钟 120s
			juno  不能超过 30s 
中括号
	需要加
		中括号 在 经验和实际测试总结如下:

1.有些可能是SQL里面的保留字,但是你又用了它做字段名 比如Action,用[Action] 就  可以避免这个问题,如果直接Action ,SQL就要报错了。
2. 解决较长的中文名表名可能会被不识别的问题。
		这个不是必须要加,但表名或字段名如果引用知了sqlserver中的关键字,数据库道会不识别这到底是关键字还是表名(或字段名)时就必须要加。
83
	83	
		·
			SELECT B.GPDM 股票代码,count(A.INBBM) 条数 FROM usrJYXW A
JOIN usrZQZB B ON B.INBBM=A.INBBM AND B.ZQLB IN  (1,2) AND B.SSBZ IN (1,2,6,7)  
AND B.ZQSC=83 
AND A.JYRQ=@JYRQ
GROUP BY B.GPDM

sql #代表什么意思

  • 问题 WHERE A.#JZRQ and A.#XXFBRQ1 and A.#XXFBRQ2 什么意思
'   -- 单引号
"  --双引号
& -- 并且
||  -- 连接符
@ --定义变量
@@ --全局变量
# --临时表
## --全局临时表

% -- 模糊查询符号
*  -- 通配符
()  -- 括号 
-- --注释
SQL server 中的@,@@、#,##分别代表什么?
@局部变量

@@ 系统级变量

# 本地临时表

## 全局临时表

SQL @,@@、#,##分别代表什么?

SQL server 中的@,@@、#,##分别代表什么?
SQLServer的#代表局部临时表,不过你这个貌似不像,像是变量多一点。

@局部变量

@@ 系统级变量

# 本地临时表

## 全局临时表
请问:SQL中的符号^,!,$,#&,各表示什么意思?

^(位异或)
对两个整数值执行“位异或”运算.它会将第一个操作数的每一位与第二个操作数中对应的每一位进行比较.如果一位是 0,另一对应位是 1,则相应结果位设置为
1.如果两位都是 0 或两位都是 1,则相应结果位设置为 0.
两个条件必须都为有符号的整数数据类型,或都为无符号的整数数据类型.
!(逻辑非)! 运算符不能与其他运算符一起使用.例如,不能将
^(位异或)
对两个整数值执行“位异或”运算。它会将第一个操作数的每一位与第二个操作数中对应的每一位进行比较。如果一位是 0,另一对应位是 1,则相应结果位设置为
1。如果两位都是 0 或两位都是 1,则相应结果位设置为 0

两个条件必须都为有符号的整数数据类型,或都为无符号的整数数据类型。

!(逻辑非)! 运算符不能与其他运算符
^(按位互斥 OR
 Transact-SQL 语句中,将两个给定的整型值转换为二进制表达式,对其执行按位互斥 OR 运算。

优先股查漏-测试

usrGSCWZYZB

SELECT [股票代码]=B.GPDM,[证券简称]=B.ZQJC,[优先股代码]=C.GPDM,[优先股简称]=C.ZQJC 
FROM usrGSCWZYZB A 
JOIN usrZQZB    B ON B.IGSDM=A.IGSDM and B.ZQLB IN (1,2) and B.ZQLB=(SELECT TOP 1 ZQLB FROM usrZQZB where IGSDM=A.IGSDM ORDER BY ZQLB) 
JOIN usrZQZB    C ON C.IGSDM=A.IGSDM and C.ZQLB=55 and ISNULL(C.SSRQ,'2099-12-31')<=A.JZRQ 
JOIN usrYXGGKB D ON D.INBBM=C.INBBM and ISNULL(D.TZJYR,'2099-12-31')>=A.JZRQ and ISNULL(D.ZGJZR,'2099-12-31')>=A.JZRQ 
WHERE A.#JZRQ and A.#XXFBRQ1 and A.#XXFBRQ2 
and A.IGSDM NOT IN ( SELECT IGSDM FROM usrYXGCYR WHERE JZRQ=A.JZRQ) 
ORDER BY B.GPDM 

sz在深圳交易所上bai市的股票、代码du0开头 sh在上海交易所上市的股票、代码6开头 hk。。zhi。香港dao 内地人目前只能炒A股,A股都在上海或深圳上市。

领导人介绍 的 附表的文字说明

SELECT B.GPDM 股票代码,B.ZQJC 证券简称,A.XXFBRQ 信息发布日期,A.XM 姓名 ,
Q.MS 性别,SUBSTRING(LTRIM(CONVERT(VARCHAR(100),A.BJJS)),1,10) 背景,A.XGSJ 修改时间,D.OPERATORNAME 修改人员,A.ID
FROM usrZQZB B 
JOIN usrGSZYLDRJS A ON A.IGSDM=B.IGSDM AND  B.SSBZ IN  (1,2,6)
JOIN cmdOPERATORS D ON D.OPERATORID=A.XGRY 
LEFT JOIN  usrXTCLB Q  ON Q.LB=1234  AND Q.DM=A.XB
WHERE (A.BJJS LIKE  '%先生%' OR A.BJJS LIKE  '%男%' ) AND A.BJJS NOT LIKE  '%女士%' AND A.XB=2 
AND B.ID = (SELECT TOP 1 ID FROM usrZQZB WHERE IGSDM=B.IGSDM ORDER BY ZQLB) 

test5-29

 select [公告类型]='招股意向书',  [公告日期]=A.XXFBRQ,  [代码]=B.GPDM, [简称]=B.ZQJC,  [公告标题]= A.BT,  [记录情况]=case when C.ID IS NOT NULL then '有' else '无' end,  [公开标志]=case when C.GKBZ=3 THEN  '公开' else '不公开' end,  C.ID,[URL]=A.URL,[公告入库时间]=A.XGSJ  from usrGGLJDZ A with (nolock)  left join usrZQZB B ON A.INBBM = B.INBBM  left join usrXGFXYSS C ON A.INBBM = C.INBBM AND (C.ZGYXSFBRQ=A.XXFBRQ)  where A.#XXFBRQ1 and A.#XXFBRQ2  and A.BT like '%首次公开%' AND A.BT like '%招股意向书%'  and A.BT NOT LIKE '%附录%'  and  A.BT  not like '%意见%' and  A.BT  not like '%细则%'  UNION  select [公告类型]='招股说明书',  [公告日期]=A.XXFBRQ,  [代码]=B.GPDM, [简称]=B.ZQJC,  [公告标题]= A.BT,  [记录情况]=case when C.ID IS NOT NULL then '有' else '无' end,  [公开标志]=case when C.GKBZ=3 THEN  '公开' else '不公开' end,  C.ID,[URL]=A.URL,[公告入库时间]=A.XGSJ  from usrGGLJDZ A with (nolock)  left join usrZQZB B ON A.INBBM = B.INBBM  left join usrXGFXYSS C ON A.INBBM = C.INBBM AND (C.ZGSMSFBRQ=A.XXFBRQ)  where A.#XXFBRQ1 and A.#XXFBRQ2  and A.BT like '%首次公开%' AND A.BT like '%招股说明书%'  and A.BT NOT LIKE '%附录%'  and  A.BT  not like '%意见%' and  A.BT  not like '%细则%'  AND C.GKBZ=3  UNION  select [公告类型]='上市公告书',  [公告日期]=A.XXFBRQ,  [代码]=B.GPDM, [简称]=B.ZQJC,  [公告标题]= A.BT,  [记录情况]=case when C.ID IS NOT NULL then '有' else '无' end,  [公开标志]=case when C.GKBZ=3 THEN  '公开' else '不公开' end,  C.ID,[URL]=A.URL,[公告入库时间]=A.XGSJ  from usrGGLJDZ A with (nolock)  left join usrZQZB B ON A.INBBM = B.INBBM  left join usrXGFXYSS C ON A.INBBM = C.INBBM AND (C.SSGGSFBRQ=A.XXFBRQ)  where A.#XXFBRQ1 and A.#XXFBRQ2  and A.BT like '%首次公开%' AND A.BT like '%上市公告书%'  and A.BT NOT LIKE '%提示性公告%'  and  A.BT  not like '%意见%' and  A.BT  not like '%细则%'  UNION  select [公告类型]='发行公告',  [公告日期]=A.XXFBRQ,  [代码]=B.GPDM, [简称]=B.ZQJC,  [公告标题]= A.BT,  [记录情况]=case when C.ID IS NOT NULL then '有' else '无' end,  [公开标志]=case when C.GKBZ=3 THEN  '公开' else '不公开' end,  C.ID,[URL]=A.URL,[公告入库时间]=A.XGSJ  from usrGGLJDZ A with (nolock)  left join usrZQZB B ON A.INBBM = B.INBBM  left join usrXGFXYSS C ON A.INBBM = C.INBBM AND DATEDIFF (DD,CONVERT(CHAR(10),C.XGSJ,120),A.XXFBRQ)<=3  where  A.#XXFBRQ1 and A.#XXFBRQ2  and  A.BT like '%首次%发行公告%'    and    A.BT    not like '%债券%'  UNION  select [公告类型]='发行结果公告',  [公告日期]=A.XXFBRQ,  [代码]=B.GPDM, [简称]=B.ZQJC,  [公告标题]= A.BT,  [记录情况]=case when C.ID IS NOT NULL then '有' else '无' end,  [公开标志]=case when C.GKBZ=3 THEN  '公开' else '不公开' end,  C.ID,[URL]=A.URL,[公告入库时间]=A.XGSJ  from usrGGLJDZ A with (nolock)  left join usrZQZB B ON A.INBBM = B.INBBM  left join usrXGFXYSS C ON A.INBBM = C.INBBM AND DATEDIFF (DD,CONVERT(CHAR(10),C.XGSJ,120),A.XXFBRQ)<=3  where  A.#XXFBRQ1 and A.#XXFBRQ2  AND (A.BT LIKE '%中签率%' OR A.BT LIKE '%配售%' OR A.BT LIKE '%网下发行结果%' OR A.BT LIKE '%发行结果%' )  and A.BT like '%首次%'  and  A.BT  not like '%意见%' and  A.BT  not like '%细则%'  order by '公告入库时间' DESC,B.GPDM,'公告类型'  

References

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦