110,566
社区成员
发帖
与我相关
我的任务
分享
----------------------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2010-07-10 10:02:44
-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
-- Blog : http://blog.csdn.net/htl258
----------------------------------------------------------------------------------
--> 生成测试数据表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([ChePaiHao] [nvarchar](10),[FaCheShiJian] [datetime],[HuiCheShiJian] [datetime],[HuoPingMingCheng] [nvarchar](10),[DanJia] [numeric](5,2),[ShuLiang] [int])
INSERT INTO [tb]
SELECT '粤K2541','2010-06-07','2010-07-02','大理石桌','150.00','20' UNION ALL
SELECT '粤K2541','2010-06-07','2010-07-02','大理石凳','135.00','50' UNION ALL
SELECT '粤K2369','2010-06-11',NULL,'衣柜','145.00','22' UNION ALL
SELECT '粤K2369','2010-06-11',NULL,'木床','100.00','13'
--SELECT * FROM [tb]
-->SQL查询如下:
SELECT ChePaiHao,CONVERT(CHAR,FaCheShiJian,23) FaCheShiJian,CONVERT(CHAR,HuiCheShiJian,23) HuiCheShiJian,
HuoPingMingCheng = STUFF((SELECT ','+HuoPingMingCheng FROM tb WHERE ChePaiHao=t.ChePaiHao FOR XML PATH('')),1,1,''),
DanJia=SUM(DanJia),
ShuLiang=SUM(ShuLiang)
FROM tb t
GROUP BY ChePaiHao,CONVERT(CHAR,FaCheShiJian,23),CONVERT(CHAR,HuiCheShiJian,23)
ORDER BY 2
/*
ChePaiHao FaCheShiJian HuiCheShiJian HuoPingMingCheng DanJia ShuLiang
---------- ------------------------------ ------------------------------ ----------------------- --------------------------------------- -----------
粤K2541 2010-06-07 2010-07-02 大理石桌,大理石凳 285.00 70
粤K2369 2010-06-11 NULL 衣柜,木床 245.00 35
(2 行受影响)
*/
CREATE FUNCTION GET_STRING(@NAME VARCHAR(10))
RETURNS NVARCHAR(40)
AS
BEGIN
DECLARE @RESULT NVARCHAR(40)
SELECT @RESULT=ISNULL(@RESULT+',','')+PATTERN+'('+LTRIM(COUNT)+')' FROM A WHERE NAME=@NAME
RETURN @RESULT
END