好的SQL写法
DECLARE @beginTime VARCHAR(20)= '2017-12-20 00:00:00';
DECLARE @endTime VARCHAR(20)= '2017-12-26 00:00:00';
DECLARE @country VARCHAR(20)= '';
DECLARE @OrderFrom VARCHAR(20)= '';
DECLARE @TooWeight VARCHAR(20)= '';
SELECT @beginTime + '~' + @endTime AS '日期+时间' ,
'15号仓' AS '实体仓' ,
@country AS '国家地区' ,
( SELECT COUNT(0)
FROM dbo.TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = @country
AND a.CreateTime >= @beginTime
AND a.CreateTime < @endTime
AND a.DeleteUser = 0
AND a.TooWeight = CAST(SUBSTRING(@TooWeight, 0,
CHARINDEX('[', @TooWeight)) AS INT)
AND a.OrderFrom = CAST(SUBSTRING(@OrderFrom, 0,
CHARINDEX('[', @OrderFrom)) AS INT)
) AS '一段预报单量' ,
( SELECT COUNT(0)
FROM dbo.TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = @country
AND a.ReceivedTime >= @beginTime
AND a.ReceivedTime < @endTime
AND a.DeleteUser = 0
AND a.TooWeight = CAST(SUBSTRING(@TooWeight, 0,
CHARINDEX('[', @TooWeight)) AS INT)
AND a.OrderFrom = CAST(SUBSTRING(@OrderFrom, 0,
CHARINDEX('[', @OrderFrom)) AS INT)
) AS '一段签收单量' ,
( SELECT COUNT(0)
FROM dbo.TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = @country
AND a.RejectTime >= @beginTime
AND a.RejectTime < @endTime
AND a.DeleteUser = 0
AND a.TooWeight = CAST(SUBSTRING(@TooWeight, 0,
CHARINDEX('[', @TooWeight)) AS INT)
AND a.OrderFrom = CAST(SUBSTRING(@OrderFrom, 0,
CHARINDEX('[', @OrderFrom)) AS INT)
) AS '一段签收异常单量' ,
( SELECT COUNT(0)
FROM dbo.TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = @country
AND a.DomesticWarehouseInTime >= @beginTime
AND a.DomesticWarehouseInTime < @endTime
AND a.DeleteUser = 0
AND a.TooWeight = CAST(SUBSTRING(@TooWeight, 0,
CHARINDEX('[', @TooWeight)) AS INT)
AND a.OrderFrom = CAST(SUBSTRING(@OrderFrom, 0,
CHARINDEX('[', @OrderFrom)) AS INT)
) AS '一段入库单量' ,
( SELECT COUNT(0)
FROM dbo.TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = @country
AND a.DomesticWarehouseInTime >= @beginTime
AND a.DomesticWarehouseInTime < @endTime
AND a.DeleteUser = 0
AND a.StatusFlag = 11
AND a.TooWeight = CAST(SUBSTRING(@TooWeight, 0,
CHARINDEX('[', @TooWeight)) AS INT)
AND a.OrderFrom = CAST(SUBSTRING(@OrderFrom, 0,
CHARINDEX('[', @OrderFrom)) AS INT)
) AS '一段入库异常单量';
--------------------------------------------------------------
SELECT
mailNo,
CASE
WHEN catalogName IS NULL
OR catalogName LIKE '%其他%'
OR catalogName LIKE '%用品%'
OR catalogName LIKE '%邮费%' THEN
productName
ELSE
catalogName
END catalogName,
itemName,
itemNo,
hsCode,
TRUNCATE (
temp.Weight * temp.productNum / SUM(temp.productNum),
2
) AS weight,
(
TRUNCATE (
temp.Weight * temp.productNum / SUM(temp.productNum),
2
)
) - 0.01 AS netWt,
productNum AS num,
TRUNCATE (TRUNCATE (price, 2) * productNum, 2) AS total,
TRUNCATE (price, 2) AS price,
currency,
CASE temp.unit
WHEN '千克' THEN
temp.Weight * temp.productNum / SUM(temp.productNum)
WHEN '百个' THEN
CONVERT (
temp.productNum / 100.0,
SIGNED
)
ELSE
productNum
END qty,
unit,
unit1,
CASE temp.unit1
WHEN '千克' THEN
temp.Weight * temp.productNum / SUM(temp.productNum)
WHEN '百个' THEN
CONVERT (productNum / 100.0, SIGNED)
ELSE
productNum
END qty1,
unit1 AS unit2,
CASE temp.unit1
WHEN '千克' THEN
temp.Weight * temp.productNum / SUM(temp.productNum)
WHEN '百个' THEN
CONVERT (productNum / 100.0, SIGNED)
ELSE
productNum
END qty2,
'' AS giftFlag,
'' AS note,
'' AS gnum,
'' AS orderNo,
productName
FROM
(
SELECT
b.end_mail_no AS mailNo,
IFNULL(
MAX(
substring_index(
d.item_category_name,
'-' ,- 1
)
),
MAX(d.item_name)
) AS catalogName,
e.item_name AS itemName,
e.item_no AS itemNo,
e.g_code AS hsCode,
CASE
WHEN SUM(c.weight) < 0.02 THEN
0.02
ELSE
SUM(c.weight)
END AS weight,
d.item_quantity AS quantity,
(
SUM(d.total_item_actual_price) * 0.1498
) / SUM(d.item_quantity) AS price,
'美元' AS currency,
SUM(d.item_quantity) AS productNum,
e.unit,
e.unit1,
SUM(d.item_quantity) AS qty1,
e.unit2,
SUM(d.item_quantity) AS qty2,
d.item_name AS productName
FROM
prealert_order_carriage a
LEFT JOIN prealert_end_delivery_info b ON a.id = b.order_carriage_id
LEFT JOIN prealert_package c ON a.id = c.order_carriage_id
LEFT JOIN prealert_order_item d ON c.id = d.package_id
LEFT JOIN sys_category_customs e ON d.second_category_id = e.category_id
WHERE
a.id = 284985127406145536
GROUP BY
b.end_mail_no,
e.item_name,
e.item_no,
e.g_code,
d.item_quantity,
e.unit,
e.unit1,
e.unit2,
d.item_name
) temp
GROUP BY
mailNo,
catalogName,
itemName,
itemNo,
hsCode,
quantity,
unit,
unit1
好的SQL写法的更多相关文章
- 查询分页的几种Sql写法
查询分页的几种Sql写法 摘自:http://www.cnblogs.com/zcttxs/archive/2012/04/01/2429151.html 1.创建测试环境,(插入100万条数据大概耗 ...
- MySQL查询不区分大小写的sql写法
MySQL查询不区分大小写的sql写法 mysql查询默认是不区分大小写的 如: select * from some_table where str=‘abc'; select * from som ...
- DB2、ORACLE SQL写法的主要区别
DB2.ORACLE SQL写法的主要区别 说实话,ORACLE把国内的程序员惯坏了,代码中的SQL充斥着大量ORACLE特性,几乎没人知道ANSI的标准SQL是什么样子,导致程序脱离了ORACL ...
- 字段自动递增的数据库建表的SQL写法
数据库建表的SQL写法如下: 数据库建表的SQL写法如下: create table dataC( a int identity(1,2) primary key, b varchar(20)) ...
- SQL Server中参数化SQL写法遇到parameter sniff ,导致不合理执行计划重用的一种解决方案
parameter sniff问题是重用其他参数生成的执行计划,导致当前参数采用该执行计划非最优化的现象.想必熟悉数据的同学都应该知道,产生parameter sniff最典型的问题就是使用了参数化的 ...
- sql查询一天内的where写法,sql写法
sql查询一天内的写法: 1. where createtime BETWEEN (select date_format(now(),'%Y-%m-%d 00:00:00')) and (select ...
- MySQL实现阶段累加的sql写法 ,eq:统计余额
最近项目碰到一个新的需求,统计每日充值/消费之后的余额.对于这种需求,其实也很简单,只需要在每次充值/消费后,计算下余额,然后保存下来就可以了.但是对于这种需求,一条sql就能搞定,都不需要做冗余字段 ...
- sql server中format函数的yyyyMMddHHmmssffff时间格式兼容旧版sql写法
问题:博主看到项目脚本,有些地方使用了format函数来把当前日期转换成yyyyMMddHHmmssffff的格式,但在测试环境数据库是sql 2008 r2,是不支持format这个函数的.脚本会报 ...
- 你不会还在用这8个错误的SQL写法吧?
1.LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引 ...
- Mysql 实例:mysql语句练习50题(普通sql写法)
为了练习sql语句,在网上找了一些题,自己做了一遍,收益颇多.很多地方换一种思路,有更好的写法,欢迎指正. 题目地址:https://blog.csdn.net/fashion2014/article ...
随机推荐
- 关于后台传来的json是含英文字母的string
最近帮朋友写东西,遇上一个比较坑的后台,传来的json是字符串,并且还伴有英文字符,类似 callback({xxx:xxx,xxx:xxx}),我打印了一下后台传来的数据格式,发现时string,所 ...
- base64文件上传的问题
package com.zhicall.media.util; import java.io.FileInputStream; import java.io.FileOutputStream; imp ...
- SpringBoot-------实现多数据源Demo
之前SpringBoot出来时候就看了下Springboot,感觉的确精简掉了配置文件! 还是很方便的!没办法,我只是个菜鸟! 什么怎么启动Springboot什么的就不说了, 具体的Demo地址我都 ...
- golang 如何使用模版?
package main import ( "fmt" "net/http" "log" "html/template" ...
- DumpBinary
stdafx.h #include "targetver.h" #include <stdio.h> #include <tchar.h> #include ...
- SQL2008 R2直接恢复 mdf后缀数据文件
数据库默认存储地址为 C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA ,那么我首先把朋友给的,md ...
- 理解spring中的BeanFactory和FactoryBean的区别与联系
原文地址:http://blog.csdn.net/joenqc/article/details/66479154 首先,这俩都是个接口… 实现 BeanFactory 接口的类表明此类事一个工厂,作 ...
- 1.1 使用电脑测试MC20模块的基础使用和测试
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- numpy的通用函数:快速的元素级数组函数
通用函数(ufunc)是对ndarray中的数据执行元素级运算的函数.可看作简单函数的矢量化包装. 一元ufunc sqrt对数组中的所有元素开平方 exp对数组中的所有元素求指数 In [93]: ...
- 剑指offer 面试28题
面试28题: 题目:对称的二叉树题: 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的 解题思路: 可以定义一种遍历算法,先遍历右子节点再遍 ...