USE [ChangHongWMS612]
GO
/****** Object: StoredProcedure [dbo].[st_WMS_SelStockInBillList] Script Date: 09/30/2015 10:32:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
Author:zhuss
Date: 2014-12-18
Remark:Get Product StockIn Bill Information
原存储过程名称:SelStockInBillList
Update:hz
UpdateTime:2014-12-27
Remark:添加分页
exec st_WMS_SelStockInBillList 'WX20150603002','2014-05-01','2016-06-04','','','test',20,1
exec st_WMS_SelStockInBillList '','2014-05-01','2016-06-04','','','test',1000,1
*/
ALTER proc [dbo].[st_WMS_SelStockInBillList]
(
@BillNO varchar(50) = '',
@StartDate varchar(19) = '',
@EndDate varchar(19) = '',
@MO varchar(50) ='',
@Status varchar(20) = '',
@ItemNO varchar(50) = '',
@ItemName varchar(100)='',
@BillType varchar(10)='',
@Pagecount int=20,
@Pageindex int=1
)
as
select ID = IDENTITY(int,1,1),i.BillNo, BillName = b.[Desc],p.StockName , i.Date, i.TotalQty
, Status = case when i.status = 'new' then '已保存' when i.status ='appr' then '已审核' else '' end,s.ItemNO
, ProductNoList = convert(varchar(8000),null),ProductList = convert(varchar(8000),null),ItemTypeList=convert(varchar(4000),null),
MoList = convert(varchar(8000),null),RemarkList = convert(varchar(8000),null),QtyList = convert(varchar(8000),null)
, ItemCount = (select count(*) from WMS_StockInItem where BillNo = i.BillNo),i.SupplyNO as SupplyNo,i.MaterialBill
into #t_StockInBill
from WMS_StockInBill i
join WMS_StockInItem s on s.billno=i.billno
join WMS_ProductStorage p on i.StockNo = p.StockNO
join WMS_BillCategory b on i.BillType = b.Name and b.Type = 'ProdIn'
join WMS_Product pt on pt.ItemNo=s.ItemNO

where (@BillNO = '' or i.BillNO like '%' + @BillNO + '%')
and ((@StartDate = '' and @EndDate = '') or i.Date between @StartDate and @EndDate)
and (@MO = '' or s.MO like '%' +@Mo + '%')
and (@Status = '' or i.Status = @Status)
and (s.ItemNo like '%'+@ItemNO+'%' or @ItemNO='')
and (@ItemName='' or pt.ItemDesc like '%'+@ItemName+'%')
and (@BillType='' or i.BillType like '%'+@BillType+'%')
order by i.Date desc, i.BillNO desc

--删除一个入库单号有多个产品的,只保留最大的那一条记录
delete from #t_StockInBill
where id not in(select max(id) from #t_StockInBill group by BillNo)

update t set ProductNoList=STUFF((
SELECT ','+ m.ItemNO FROM WMS_StockInItem m WHERE m.billno=t.billno FOR XML PATH('')
),1 ,1, '')
,ProductList=STUFF((
SELECT ','+ ItemDesc from(select billno, ItemDesc from WMS_StockInItem m join WMS_Product p on m.ItemNO=p.ItemNo) m WHERE m.billno=t.billno FOR XML PATH('')
),1 ,1, '')
,ItemTypeList=STUFF((
SELECT ','+ ItemType from(select billno, ItemType from WMS_StockInItem m join WMS_Product p on m.ItemNO=p.ItemNo) m WHERE m.billno=t.billno FOR XML PATH('')
),1 ,1, '')
,MoList=STUFF((
SELECT ','+ m.Mo FROM WMS_StockInItem m WHERE m.billno=t.billno FOR XML PATH('')
),1 ,1, '')
,RemarkList=STUFF((
SELECT ','+ m.Remark FROM WMS_StockInItem m WHERE m.billno=t.billno FOR XML PATH('')
),1 ,1, ''),
QtyList=STUFF((
SELECT ','+ convert(varchar(10),m.InQty) FROM WMS_StockInItem m WHERE m.billno=t.billno FOR XML PATH('')
),1 ,1, '')
from #t_StockInBill t

-- update t set ProductList = p.ItemDesc,ProductNoList=p.Itemno,MoList=i.Mo,RemarkList=i.Remark, QtyList = convert(varchar(100),i.InQty)
--from #t_StockInBill t
--join WMS_StockInItem i on t.BillNo = i.BillNo
--join WMS_Product p on p.ItemNo = i.ItemNo
--where t.ItemCount =1

-- declare @ProductList varchar(8000),@ProductNoList varchar(8000),@MoList varchar(8000), @RemarkList varchar(8000),
-- @QtyList varchar(8000), @vBillNo varchar(50)
-- declare CursorD cursor local
-- For select b.BillNo
-- from #t_StockInBill b
-- where ItemCount>1
--Open CursorD
--Fetch next From CursorD Into @vBillNo
--While(@@Fetch_Status = 0)
-- Begin
-- select @ProductList = '',@ProductNoList='',@MoList='',@RemarkList='', @QtyList= ''
-- select @ProductList = case when @ProductList = '' then p.ItemDesc else @ProductList+','+p.ItemDesc end,
-- @ProductNoList = case when @ProductNoList = '' then p.ItemNo else @ProductNoList+','+p.ItemNo end,
-- @MoList = case when @MoList = '' then i.Mo else @MoList+','+i.Mo end,
-- @RemarkList = case when @RemarkList = '' then i.Remark else @RemarkList+','+i.Remark end
-- , @QtyList = case when @QtyList = '' then convert(varchar(100),i.InQty) else @QtyList + ','+convert(varchar(100),i.InQty) end
-- from WMS_StockInItem i
-- join WMS_Product p on p.ItemNo = i.ItemNo
-- where i.BillNo = @vBillNo
-- update #t_StockInBill set ProductList = @ProductList,ProductNoList = @ProductNoList,
-- RemarkList=@RemarkList,QtyList = @QtyList where BillNo = @vBillNo
-- Fetch next From CursorD Into @vBillNo
--End
--Close CursorD
--Deallocate CursorD

select ID = IDENTITY(int,1,1),BillNo, BillName,MoList, StockName, Date, TotalQty
, Status, ProductNoList,ProductList,ItemTypeList,QtyList, ItemCount,SupplyNo,RemarkList,MaterialBill
into #t_StockInBill2
from #t_StockInBill

declare @row_from int, @row_to int,@out_total_rows int
select @out_total_rows = count(*) from #t_StockInBill2

execute st_MES_RS_Pages @out_total_rows, @Pagecount, @Pageindex, @row_from output, @row_to output

select * from #t_StockInBill2
where ID between @row_from and @row_to
order by ID

select @out_total_rows

FOR XML PATH的用法的更多相关文章

  1. SQLServer中sql for xml path 的用法

    我们通常需要获取一个多行的某个字段拼出的字符串,我们可以使用for xml path进行处理:下面将介绍for xml path的具体用法: 创建测试表&插入测试数据 在数据库中新增测试表 C ...

  2. Sql server—— for xml path简单用法(可以按照分组把相同组的列中的不同的值,像字符串一样拼接在一起显示在分组之后的列中。)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI8AAACWCAIAAABo2EyXAAAKeklEQVR4nO2dy27rNh7G+U7CFIrfZX

  3. FOR XML PATH 函数用法

    一.FOR XML PATH 简单介绍              那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下: 接下来我们来看 ...

  4. SQL SERVER数据库内 FOR XML PATH 函数用法

    把自己点点滴滴的学习记录下来!!!! 一.FOR XML PATH 简单介绍 那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(TBJTXXCE)用来存放就诊患者信息,表结构 ...

  5. for xml path以及sql合并查询

    sql中for xml path的用法. http://www.cnblogs.com/yanghaibo/archive/2010/06/04/1751405.html

  6. 使用 SQL的 for xml path来进行字符串拼接

    本篇主要讲怎么利用SQL的FOR XML PATH 参数来进行字符串拼接,FOR XML PATH的用法很简单,它会以xml文件的形式来返回数据. 我的讲解步骤: 1:构造初始数据 2:提出问题 3: ...

  7. SQL FOR XML PATH 用法

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  8. SQL FOR XML PATH 和 Stuff 用法

    sql stuff 用法 1.作用 删除指定长度的字符,并在指定的起点处插入另一组字符. 2.语法 STUFF ( character_expression , start , length ,cha ...

  9. 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器

    1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ...

随机推荐

  1. 前端JS对后台传递的timestamp的转换

    后台传递的timestamp类型的数据的JSON: Date.prototype.format = function(format) { var o = { "M+" : this ...

  2. POJ 3080 (字符串水题) Blue Jeans

    题意: 找出这些串中最长的公共子串(长度≥3),如果长度相同输出字典序最小的那个. 分析: 用库函数strstr直接查找就好了,用KMP反而是杀鸡用牛刀. #include <cstdio> ...

  3. Svn正确的使用方法

    想必大家现在都比较喜欢使用svn(subversion)完成代码管理了,因为它的开源,轻巧,易用.但是这样一个宝贝如果不知道其正确的用法,也会让我们百思不得其解,甚至耽误项目进度,浪费程序员的心血和结 ...

  4. 【 D3.js 高级系列 — 6.0 】 值域和颜色

    在[入门 - 第 10 章]作了一张中国地图,其中各省份的颜色值都是随意赋值的.如果要将一些值反映在地图上,可以利用颜色的变化来表示值的变化. 1. 思路 例如,有值域的范围为: [10, 500] ...

  5. noip2001提高组题解

    今天继续感动滚粗.第一次提交170分,不能多说. 第一题:一元三次方程 明明是寒假讲分治的时候做过的题居然还是WA而且只拿了60分,说明知识掌握实在不够牢固. 寒假做的是保留4位小数,原题只保留2位, ...

  6. MySQL操作备忘录

    在mysql包中,mysqld是数据库服务器,mysql是客户端,mysqladmin则用于管理数据库服务器的信息,如用户密码等. 关于安装: 1.在d:/sftwr/mysql/bin目录下: my ...

  7. Android 工程目录结构简介

    一般来说,一个Android工程的目录结构如下图所示. 1:src JAVA源代码都放在这里面. 2:gen 编译器自动生成的一些JAVA代码 3:Android 4.2 Android平台(本工程用 ...

  8. 认识Java虚拟机的内部体系结构、gc示例

    认识Java虚拟机的内部体系结构 Java虚拟机的内部体系结构也许很少有人去关心,因为对于Java程序员来说,一般只需要跟API打交道就可以了.这些体系结构只是Java虚拟机内部的结构而已.但是如果理 ...

  9. Hadoop对文本文件的快速全局排序

    一.背景 Hadoop中实现了用于全局排序的InputSampler类和TotalOrderPartitioner类,调用示例是org.apache.hadoop.examples.Sort. 但是当 ...

  10. uilib库gdi句柄泄漏bug修复,duilib防止gdi泄漏的小提醒

    转载请说明原出处,谢谢~~ 今天下午群友的网友让我帮忙看一下的duilib程序的问题,程序中包含了List控件,会定时清除所有子项目然后重新添加.但是程序运行一段时间后会自己崩溃!我编译了源码运行后在 ...