日期:2014-05-19  浏览次数:20476 次

两表更新SQL语句求解!!!
我有两个表:

表Route:
ID RouteName
1 上门
2 电话
3 短信
4 杂志
5 户外广告

表VisitorLog:
ID Date RouteName   Value
1 2007-2-7 上门   10
2 2007-3-5 电话   15
3 2007-3-5 短信   10

我想在GridView上显示成这样:
日期 上门 电话 短信 杂志 户外广告
2007-2-7   10
2007-3-5         15   10

请问sqlDataSource的SELECT、UPDATE、INSERT语句该怎么写?

------解决方案--------------------
关于sql 参考:http://community.csdn.net/Expert/topic/5340/5340592.xml?temp=0.858683335994688
------解决方案--------------------
行轉列

--建立測試環境
Create Table Route
(ID Int,
RouteName Nvarchar(20))
Insert Route Select 1, N '上门 '
Union All Select 2, N '电话 '
Union All Select 3, N '短信 '
Union All Select 4, N '杂志 '
Union All Select 5, N '户外广告 '

Create Table VisitorLog
(ID Int,
[Date] Varchar(10),
RouteName Nvarchar(20),
Value Int)
Insert VisitorLog Select 1, '2007-2-7 ', N '上门 ', 10
Union All Select 2, '2007-3-5 ', N '电话 ', 15
Union All Select 3, '2007-3-5 ', N '短信 ', 10
GO
--測試
Declare @S Nvarchar(4000)
Select @S = N 'Select [Date] As 日期 '
Select @S = @S + ', SUM(Case RouteName When N ' ' ' + RouteName + ' ' ' Then Value Else 0 End) As ' + RouteName
From Route Order By ID
Select @S = @S + ' From VisitorLog Group By [Date] Order By [Date] '
EXEC(@S)
GO
--刪除測試
Drop Table Route, VisitorLog
--結果
/*
日期 上门 电话 短信 杂志 户外广告
2007-2-7 10 0 0 0 0
2007-3-5 0 15 10 0 0
*/
------解决方案--------------------
这个是列转行的,你得构造按你的要求先构造sql,然后使用这个sql再查询
------解决方案--------------------
那就换实现方案吧
------解决方案--------------------
用之前建表,就像临时表
------解决方案--------------------
用交叉表形式写吧