一样的语句单独执行和在存储过程中执行字段的顺序不一样

javon_liu javon_liu 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这是显示的结果

下面是语句


DECLARE @SDate DATETIME
DECLARE @EDate DATETIME
DECLARE @Supplier NVARCHAR(20)
DECLARE @SSupplierNumber NVARCHAR(20)
DECLARE @ESupplierNumber NVARCHAR(20)
DECLARE @Client NVARCHAR(20)
DECLARE @SClientNumber NVARCHAR(20)
DECLARE @EClientNumber NVARCHAR(20)
DECLARE @FName NVARCHAR(200)
DECLARE @FBatchNo NVARCHAR(200)

SET @SDate='2015-01-01'
SET @EDate='2015-11-01'
SET @Supplier=''
SET @SSupplierNumber='07.01.01.001'
SET @ESupplierNumber='07.01.01.001'
SET @Client=''
SET @SClientNumber=''
SET @EClientNumber=''
SET @FName=''
SET @FBatchNo=''
SELECT
rn,
rn1,
采购单号,
CASE
WHEN rn IS NULL AND 采购单号<>'合计' THEN 采购单号+' 小计'
WHEN rn IS NULL AND 采购单号='合计' THEN '合计'
ELSE 采购入库摘要
END 采购入库摘要,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN '' ELSE 对比编号 END 对比编号,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN '' ELSE 供应商 END 供应商,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN '' ELSE 供应商编码 END 供应商代码,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN NULL ELSE 入库日期 END 入库日期,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN '' ELSE 采购物料名称 END 采购物料名称,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN '' ELSE 采购批号 END 采购批号,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN NULL ELSE 采购单价 END 采购单价,
采购数量,
采购金额,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN NULL ELSE 换单费 END 换单费,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN NULL ELSE 港杂费 END 港杂费,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN NULL ELSE 卫生费 END 卫生费,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN NULL ELSE 检疫费 END 检疫费,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN NULL ELSE 冷藏费 END 冷藏费,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN NULL ELSE 代理费 END 代理费,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN NULL ELSE 其他费 END 其他费,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN NULL ELSE 港上费用小计 END 港上费用小计,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN '' ELSE 客户 END 客户,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN '' ELSE 客户编码 END 客户编码,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN '' ELSE 物料名称 END 物料名称,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN '' ELSE FBatchNo END FBatchNo,
CASE WHEN rn IS NULL AND 采购单号<>'合计' THEN NULL ELSE 单价 END 单价,
件数,
金额,
CASE WHEN rn IS NULL AND 采购单号='合计' THEN 金额-采购金额-港上费用小计 END AS 毛利
FROM(
--------------------------------------------------------------------
--------------------------------------------------------------------
SELECT
top 100000
--rn,
MAX(rn1) rn1,
CASE WHEN(GROUPING(采购单号)=1) THEN '合计' ELSE ISNULL(采购单号,'') END AS 采购单号,
CASE WHEN(GROUPING(rn)=1) THEN null ELSE ISNULL(rn,0) END AS rn,
MAX(采购入库摘要) 采购入库摘要,
MAX(对比编号) 对比编号,
MAX(供应商) 供应商,
MAX(供应商编码) 供应商编码,
MAX(入库日期) 入库日期,
MAX(采购物料名称) 采购物料名称,
MAX(采购批号) 采购批号,
MAX(采购单价) 采购单价,
SUM(采购数量) 采购数量,
SUM(采购金额) 采购金额,
MAX(换单费) 换单费,
MAX(港杂费) 港杂费,
MAX(卫生费) 卫生费,
MAX(检疫费) 检疫费,
MAX(冷藏费) 冷藏费,
MAX(代理费) 代理费,
MAX(其他费) 其他费,
MAX(港上费用小计) 港上费用小计,
MAX(客户) 客户,
MAX(客户编码) 客户编码,
MAX(物料名称) 物料名称,
MAX(FBatchNo) FBatchNo,
MAX(单价) 单价,
SUM(件数) 件数,
SUM(金额) 金额

FROM
(
--------------------------------------------------------------------
SELECT top 1000000
rn,
rn1,
采购单号,
CASE WHEN rn=1 THEN FExplanation ELSE NUll END 采购入库摘要,
CASE WHEN rn=1 THEN 对比编号 ELSE NUll END 对比编号,
CASE WHEN rn=1 THEN 供应商 ELSE NUll END 供应商,
CASE WHEN rn=1 THEN 供应商编码 ELSE NUll END 供应商编码,
CASE WHEN rn=1 THEN 入库日期 ELSE NUll END 入库日期,
CASE WHEN rn1=1 THEN 采购物料名称 ELSE NUll END 采购物料名称,
CASE WHEN rn1=1 THEN 采购批号 ELSE NUll END 采购批号,
CASE WHEN rn1=1 THEN 采购单价 ELSE NUll END 采购单价,
CASE WHEN rn1=1 THEN 采购数量 ELSE NUll END 采购数量,
CASE WHEN rn1=1 THEN 采购金额 ELSE NUll END 采购金额,
CASE WHEN rn=1 THEN
(SELECT SUM(换单费) FROM v_ICSaleCostDataNote t1 WHERE t1.FBillNo LIKE ''+ t0.对比编号 +'%') ELSE NULL END 换单费,
CASE WHEN rn=1 THEN
(SELECT SUM(港杂费) FROM v_ICSaleCostDataNote t2 WHERE t2.FBillNo LIKE ''+ t0.对比编号 +'%') ELSE NULL END 港杂费,
CASE WHEN rn=1 THEN
(SELECT SUM(卫生费) FROM v_ICSaleCostDataNote t3 WHERE t3.FBillNo LIKE ''+ t0.对比编号 +'%') ELSE NULL END 卫生费,
CASE WHEN rn=1 THEN
(SELECT SUM(检疫费) FROM v_ICSaleCostDataNote t4 WHERE t4.FBillNo LIKE ''+ t0.对比编号 +'%') ELSE NULL END 检疫费,
CASE WHEN rn=1 THEN
(SELECT SUM(冷藏费) FROM v_ICSaleCostDataNote t5 WHERE t5.FBillNo LIKE ''+ t0.对比编号 +'%') ELSE NULL END 冷藏费,
CASE WHEN rn=1 THEN
(SELECT SUM(代理费) FROM v_ICSaleCostDataNote t6 WHERE t6.FBillNo LIKE ''+ t0.对比编号 +'%') ELSE NULL END 代理费,
CASE WHEN rn=1 THEN
(SELECT SUM(其他费) FROM v_ICSaleCostDataNote t7 WHERE t7.FBillNo LIKE ''+ t0.对比编号 +'%') ELSE NULL END 其他费,
CASE WHEN rn=1 THEN
(SELECT SUM(港上费用合计) FROM v_ICSaleCostDataNote t8 WHERE t8.FBillNo LIKE ''+ t0.对比编号 +'%') ELSE NULL END 港上费用小计,
客户,
客户编码,
物料名称,
FBatchNO,
单价,
件数,
金额
FROM
(SELECT top 100000 ROW_NUMBER() OVER (partition BY 采购物料名称,采购单号 ORDER BY FEntryID) rn1, *
FROM (
SELECT ROW_NUMBER() OVER (partition BY 采购单号 ORDER BY FInterID,FEntryID) rn, *
FROM
v_QianKuan
WHERE (入库日期>=@SDate AND 入库日期<=@EDate)
AND 供应商 LIKE '%'+ @Supplier +'%'
AND 客户 LIKE '%'+@Client+'%'
AND 采购物料名称 LIKE '%'+ @FName +'%'
AND FBatchNo LIKE '%'+ @FBatchNo +'%'
AND 供应商编码>=@SSupplierNumber AND 供应商编码<=@ESupplierNumber
) s ORDER BY 采购单号,rn) t0

--------------------------------------------------------------------
) tt GROUP BY 采购单号, rn WITH ROLLUP
--------------------------------------------------------------------
--------------------------------------------------------------------
) ttt



求解
...全文

相关推荐

MySQL复制表结构和内容到另一张表中的SQL语句

1.复制表结构及数据到新表 代码如下: CREATE TABLE 新表 SELECT * FROM 旧表 2.只复制表结构到新表 代码如下: CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2 即:让WHERE条件不成立. 方法二:(低版本的mysql不支持,mysql4.0.25 不支持,mysql5已经支持了) 代码如下: CREATE TABLE 新表 LIKE 旧表 3.复制旧表的数据到新表(假设两个表结构一样) 代码如下: INSERT INTO 新表 SELECT * FROM 旧表 4.复制旧表的数据到新表(假设两个表结构不

weixin_38698863

史上最全的数据库面试题.pdf

数据库无论在什么面试中都会被问到!这是我总结的一份关于数据库面试的一些常见的题目的集锦,比较全面!!!

!@噤若寒蝉@!

SQL Server触发器及触发器中的事务学习

如果你有对触发器和事务的概念,有些了解,这篇文章,对你来说会是很简单,或能让你更进一步的了解触发器里面的一些故事,和触发器中事务个故事。在这边文章里面,我不会从触发器和事务的概念去讲述,而是从常见的两种触发器类型(DML触发器 & DDL触发器)和After触发器 &  Instead Of 触发器的应用不同,开始说起它们,然后是说与事务有关的故事。如果,你有什么建议和意见,都可以通过文章后面的回复与我沟通,或者通过E-Mail方式,与 我交流;我的Email地址是:glal@163.com      在下面的内容,用到一些SQL Server 触发器和事务的一些术语,如果有些不明白的地方,

weixin_38689055

SQL语句执行顺序图文介绍

本文将详细介绍数据库总结--SQL语句执行顺序,需要了解更多的朋友可以参考下

weixin_38747906

解析如何用SQL语句在指定字段前面插入新的字段

本篇文章是对如何用SQL语句在指定字段前面插入新的字段的方法进行了详细的分析介绍,需要的朋友参考下

weixin_38545332
评论 8
收藏 已收藏
分享
返回顶部