首页 > 数据库 > > SQL语法坑点总结(持续更新至4.13)
直入正题,本帖目的是将日常工作以及项目实践中遇到的SQL疑难杂症做汇总,由于工作环境目前主要是SQL SERVER,兼顾ORACLE、MYSQL,每条知识前都会标注数据库环境是否通用,重点会以加粗标记,供大家参考:
SELECT * FROM (SELECT FDATE, FTYPE, COUNT(1) CNT FROM UBS GROUP BY FDATE, FTYPE) ORIG
PIVOT(
SUM(CNT) FOR FTYPE IN (pv, cart, fav, buy)
) AS T--获取复购用户的每次购买日期
SELECT TOP 100 PERCENT ID=IDENTITY(INT), UBS.FID, FDATE
INTO USER_BUY_DATE
FROM UBS
JOIN USER_REBUY UR ON UBS.FID = UR.FID
WHERE FTYPE = 'buy'
GROUP BY UBS.FID, FDATE
ORDER BY UBS.FID ASC, FDATE ASC# SELECT的计算字段,由于做了大量转换,不方便引用,因此ORDER BY直接指定位置(从1开始,本例指定的就是第三个字段RATE)
SELECT ID=IDENTITY(INT),
FTYPE,
COUNT(1) CNT,
CONVERT(VARCHAR, (CONVERT(FLOAT, ROUND(COUNT(1) * 100. / (SELECT COUNT(1) FROM UBS WHERE FTYPE = 'pv'), 2)))) + '%' RATE
INTO TYPE_CNT_RATE
FROM UBS
GROUP BY FTYPE ORDER BY 3 DESC--思路一致:从第50条(不包括)数据开始取出25条数据:
--limit后面跟的是50条数据,offset后面是从第50条开始读取,即读取第51,52...74,75条
--MySQL
SELECT *
FROM MyTable
LIMIT 50 OFFSET 25;
--SQL SERVER
SELECT *
FROM MyTable
ORDER BY OrderingColumn ASC
OFFSET 50 ROWS
FETCH NEXT 25 ROWS ONLYDECLARE @CNT INT;
SELECT @CNT = COUNT(*) FROM TABLENAME WHERE FID = @Id;
PRINT @CNT;SELECT [借/贷] FROM TEST;
SELECT [FROM] FROM TEST;
SELECT * FROM [FROM]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3119337/ ,如需转载,请注明出处,否则将追究法律责任。