HELp ME

jszhai 2003-01-20 11:20:02
我不小心將數據庫減縮怎樣恢復
...全文
39 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-01-21
  • 打赏
  • 举报
回复
88
pengdali 2003-01-21
  • 打赏
  • 举报
回复
我已经回家了!我现在是在家里拨号上来的!
jszhai 2003-01-21
  • 打赏
  • 举报
回复
有機會認識您真是高興太晚了我要先走了過年回家嗎?改天再見
pengdali 2003-01-21
  • 打赏
  • 举报
回复
erp,crm
jszhai 2003-01-21
  • 打赏
  • 举报
回复
謝謝,請問您現在主要從事哪方面工作?
pengdali 2003-01-21
  • 打赏
  • 举报
回复
那句主要是想根据你数据库里的值,生成上面的"旋转结果的 SELECT "语句!

如:
declare @sql varchar(8000)
set @sql = 'select 姓名,'

select @sql = @sql + 'sum(case 科目 when '''+科目+'''
then 分数 else 0 end) as '''+科目+''','
from (select distinct 科目 from mytable) as a

select @sql = left(@sql,len(@sql)-1) + ' from mytable group by 姓名'

exec(@sql)
go
pengdali 2003-01-21
  • 打赏
  • 举报
回复
下面的语句用于创建 Pivot 表并在其中填入第一个表中的数据:

USE Northwind
GO

CREATE TABLE Pivot
( Year SMALLINT,
Quarter TINYINT,
Amount DECIMAL(2,1) )
GO
INSERT INTO Pivot VALUES (1990, 1, 1.1)
INSERT INTO Pivot VALUES (1990, 2, 1.2)
INSERT INTO Pivot VALUES (1990, 3, 1.3)
INSERT INTO Pivot VALUES (1990, 4, 1.4)
INSERT INTO Pivot VALUES (1991, 1, 2.1)
INSERT INTO Pivot VALUES (1991, 2, 2.2)
INSERT INTO Pivot VALUES (1991, 3, 2.3)
INSERT INTO Pivot VALUES (1991, 4, 2.4)
GO

下面是用于创建旋转结果的 SELECT 语句:

SELECT Year,
SUM(CASE Quarter WHEN 1 THEN Amount ELSE 0 END) AS Q1,
SUM(CASE Quarter WHEN 2 THEN Amount ELSE 0 END) AS Q2,
SUM(CASE Quarter WHEN 3 THEN Amount ELSE 0 END) AS Q3,
SUM(CASE Quarter WHEN 4 THEN Amount ELSE 0 END) AS Q4
FROM Northwind.dbo.Pivot
GROUP BY Year
GO
jszhai 2003-01-21
  • 打赏
  • 举报
回复
游標我能看懂便不懂

set @strsql=@strsql+
N',sum(case when 日期字段=''+
@temp_date+ N'''+
'then 时间字段 else 0 end) as '
+@temp_date
jszhai 2003-01-21
  • 打赏
  • 举报
回复
因為我工作有一臺考勤機
每天刷卡的記錄為txt檔
格工:
1000 2003/1/15080000
1002 2003/1/15080000


1000 為工號 后面為日期時間
現在我想作一個程序使其產生這樣的一個報錶

工號 日期(1-31)
1 15
1000 08:00 08:00
1000 12:00

等等
之前有人幫忙但我有一部看不太懂所以'''
pengdali 2003-01-21
  • 打赏
  • 举报
回复
上面是个游标例子!买本书看看吧!
谢谢!很高兴与你成为朋友!
pengdali 2003-01-21
  • 打赏
  • 举报
回复
USE pubs-----------------------------------------------------------打开
DECLARE tnames_cursor CURSOR---------------------------------------定义游标
FOR----------------------------------------------------------------选择
SELECT TABLE_NAME ----------------------------------------------游标体
FROM INFORMATION_SCHEMA.TABLES----------------------------------表名
OPEN tnames_cursor-------------------------------------------------打开游标
DECLARE @tablename sysname-----------------------------------------
--SET @tablename = 'authors'
FETCH NEXT FROM tnames_cursor INTO @tablename----------------------调用游标赋值
WHILE (@@FETCH_STATUS <> -1)---------------------------------------循环‘0’有‘-1’没找到‘-2’超出范围溢出
BEGIN
IF (@@FETCH_STATUS <> -2)---------------------------------------如果没有溢出
BEGIN
SELECT @tablename = RTRIM(@tablename)------------------------
EXEC ('SELECT ''' + @tablename + ''' = count(*) FROM '
+ @tablename )
PRINT ' '
END
FETCH NEXT FROM tnames_cursor INTO @tablename
END
CLOSE tnames_cursor
DEALLOCATE tnames_cursor
jszhai 2003-01-20
  • 打赏
  • 举报
回复
太謝謝您了,作個朋友吧,以后再有問題再麻煩您
jszhai@163.net
pengdali 2003-01-20
  • 打赏
  • 举报
回复
或:
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

你的第二个问题说清楚点好吗???
pengdali 2003-01-20
  • 打赏
  • 举报
回复
CREATE DATABASE 你的旧库名
ON PRIMARY (FILENAME = 'c:\program files\microsoft sql server\mssql\data\你的旧库的文件.mdf')
FOR ATTACH
GO
pengdali 2003-01-20
  • 打赏
  • 举报
回复
右键数据库-->所有任务-->附加数据库
jszhai 2003-01-20
  • 打赏
  • 举报
回复
我有兩個表:
其中一個表的結構為:

工號(id) 日期(date) 時間(TIMES)
001 2003/1/2 8:00
002 2003/1/2 8:00
001 2003/1/2 12:00
002 2003/1/2 12:00
001 2003/1/2 16:00
001 2003/1/3 8:00
'
'
009 2003/1/2 8:00
例示一個考勤數據記錄表
我希望通過查詢生成以下的一個表

工號(ID) 2003/1/2 2003/1/3 ' ' 20003/1/30(日期隨上表的日期加
001 8:00 8:00
001 12:00
001 16:00
002 8:00
002 12:00
'
'
0009

請高手指教


回复人: Ouyangyifeiczy(子浪) ( ) 信誉:100 2003-01-14 05:04:00 得分:0


declare @strsql varchar(8000)
declare @temp_date datetime
set @strsql='select ID'
declare #cr_date cursor for select distinct 日期字段 from
考勤数据记录表 where (日期字段)=month(getdate())
open #cr_date
fetch next from #cr_date into @temp_date
while @@fetch_status=0
begin
set @strsql=@strsql+
N',sum(case when 日期字段=''+
@temp_date+ N'''+
'then 时间字段 else 0 end) as '
+@temp_date
fetch next from #cr_date into @temp_date
end
close #cr_date
deallocate #cr_date
set @strsql=@strsql+' from 考勤数据记录表 group by 工號(ID)'
exec(@strsql)




您能看懂嗎教教我
jszhai 2003-01-20
  • 打赏
  • 举报
回复
是這樣的我在我的database 上按右鍵 不小心按了DEtach Databse ,所以后來沒有該樑案了但我drop Databse 是又不能所以請教,tks
pengdali 2003-01-20
  • 打赏
  • 举报
回复
你到底想问什么呢????
pengdali 2003-01-20
  • 打赏
  • 举报
回复
你是压缩了,又不是丢失了!
jszhai 2003-01-20
  • 打赏
  • 举报
回复
我又想要該樑案怎辦
加载更多回复(1)

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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