关于pivot的一个疑问,都会用到大家都来睇睇哇

刘兄弟 2013-04-11 06:32:21
我想出一张报表 大概就是这样的,按每个storecode 去统计每一天有多少price高于某个数的东西卖出去了
所以我需要别人输入 价格 和 那几天的时间, 目前我用的是3个时间,将来想达到的目的是任意天数之内的
,所以我需要解决的是 传入的时间的字符串 如何 调整为下面的语句可以使用.
但是在@strDate这里 就出现问题,大家看看我应该怎么把这个传递给SQL啊

CREATE TABLE dbo.test(
[SalesDate] [date] NULL,
[StoreCode] [varchar](3) NULL
price [money] NULL
)


DECLARE @strDate VARCHAR(1000)
DECLARE @Prices INT
SET @strDate=N'2013-04-01','2013-04-02','2013-04-03'
SET @Prices=100
SELECT StoreCode,[2013-04-01],[2013-04-02],[2013-04-03]
FROM(
SELECT [StoreCode],[SalesDate] FROM [Sales].[imp].[Data8IncomeSum]
WHERE prices>@Prices AND SalesDate IN (@strDate)
) AS InComeCount
PIVOT
(COUNT(SalesDate) FOR SalesDate
IN ([2013-04-01],[2013-04-02],[2013-04-03])
) AS ourpivot
...全文
207 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
刘兄弟 2013-04-13
  • 打赏
  • 举报
回复
引用 7 楼 AcHerat 的回复:
什么错。。。
没有了我自己给错参数了哈,已经修改完毕了,你的是准确的.谢谢你.
AcHerat 2013-04-13
  • 打赏
  • 举报
回复
什么错。。。
刘兄弟 2013-04-11
  • 打赏
  • 举报
回复
引用 3 楼 AcHerat 的回复:
SQL code?12345678910111213141516DECLARE @strDate VARCHAR(1000)DECLARE @Prices INTDECLARE @get_str varchar(max)SET @strDate=N'''2013-04-01'',''2013-04-02'',''2013-04-03'''SET @Prices=100se……
帮我看看哇
刘兄弟 2013-04-11
  • 打赏
  • 举报
回复
这里语法没错,执行的时候有错误是怎么个情况呢
刘兄弟 2013-04-11
  • 打赏
  • 举报
回复
DECLARE @strDate VARCHAR(1000)
DECLARE @Prices varchar
--DECLARE @get_str varchar(max)
DECLARE @sql VARCHAR(8000)
SET @strDate=N'''2013-04-01'',''2013-04-02'',''2013-04-03'''
SET @Prices=100
set @sql = '
SELECT StoreCode,[2013-04-01],[2013-04-02],[2013-04-03]
FROM(
SELECT  [StoreCode],[SalesDate] FROM [Sales].[imp].[Data8IncomeSum]
  WHERE prices>='+@Prices+' AND SalesDate IN ('+@strDate+')
  ) AS InComeCount
  PIVOT
  (COUNT(SalesDate) FOR SalesDate 
  IN ([2013-04-01],[2013-04-02],[2013-04-03])
  ) AS ourpivot '
exec(@sql)
AcHerat 2013-04-11
  • 打赏
  • 举报
回复

DECLARE @strDate VARCHAR(1000)
DECLARE @Prices INT
DECLARE @get_str varchar(max)
SET @strDate=N'''2013-04-01'',''2013-04-02'',''2013-04-03'''
SET @Prices=100
set @sql = '
SELECT StoreCode,[2013-04-01],[2013-04-02],[2013-04-03]
FROM(
SELECT  [StoreCode],[SalesDate] FROM [Sales].[imp].[Data8IncomeSum]
  WHERE prices>@Prices AND SalesDate IN ('+@strDate+')
  ) AS InComeCount
  PIVOT
  (COUNT(SalesDate) FOR SalesDate 
  IN ([2013-04-01],[2013-04-02],[2013-04-03])
  ) AS ourpivot '
exec(@sql)
刘兄弟 2013-04-11
  • 打赏
  • 举报
回复
DECLARE @strDate VARCHAR(1000) DECLARE @Prices INT SET @strDate=N'2013-04-01','2013-04-02','2013-04-03' SET @Prices=100 SELECT StoreCode,[2013-04-01],[2013-04-02],[2013-04-03] FROM( SELECT [StoreCode],[SalesDate] FROM [Sales].[imp].[Data8IncomeSum] WHERE prices>@Prices AND SalesDate IN (@strDate) ) AS InComeCount PIVOT (COUNT(SalesDate) FOR SalesDate IN ([2013-04-01],[2013-04-02],[2013-04-03]) ) AS ourpivot 其实就是需要两部分的数据 第一是 做成了 [2013-04-01],[2013-04-01],[2013-04-01] 的样式 也就是红色部分,这个在我在程序里就可以改造好. 第二是 橙色部分的的@strDate 我要如何拼接成字符串,因为最后的SQL语句也是要拼接的
hyrongg 2013-04-11
  • 打赏
  • 举报
回复
汗,你这个要用动态的SQL 去完成。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧