|
楼主 |
发表于 1-9-2006 09:55 AM
|
显示全部楼层
明白了。。原来是我import from csv,它变varchar 去。。
但那112是怎么看?
[ 本帖最后由 tensaix2j 于 1-9-2006 10:11 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 1-9-2006 10:19 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 3-9-2006 01:20 AM
|
显示全部楼层
select convert(varchar,[date down],112), 'errortype1' = sum(Case
when errortype = 1 then errorcount
else 0
End),
'errortype2' = sum(Case
when errortype = 2 then errorcount
else 0
End),
'errortype3' = sum(Case
when errortype = 3 then errorcount
else 0
End),
'errortype4' = sum(Case
when errortype = 4 then errorcount
else 0
End)
from tbldowntimeeyum04
group by convert(varchar,[date down],112)
原帖由 tensaix2j 于 30-8-2006 11:50 AM 发表
Question 3.
请教SQL
我有一个table..
yymmdd errordesc errortype errorcount
====== ========= ========= ==========
2005/9/1 blah1 1 2
2005/9/1 blah3 3 ...
[ 本帖最后由 thunderstorm 于 3-9-2006 01:27 AM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 4-9-2006 10:50 AM
|
显示全部楼层
原帖由 thunderstorm 于 3-9-2006 01:20 AM 发表
select convert(varchar,,112), 'errortype1' = sum(Case
when errortype = 1 then errorcount
else 0
...
哈,果然
谢了。。但现在有百多个errortype..
看来要用string,再用exec(string) 了。。 |
|
|
|
|
|
|
|
发表于 4-9-2006 12:18 PM
|
显示全部楼层
果然什么???
如果你的errortype是固定的那用select case就可以了,但如果errortype不固定或很大,那你应该尝试用OLAP的cubes。(OLAP 我不熟,你可以查看SQL Book Online的 Help)。
原帖由 tensaix2j 于 4-9-2006 10:50 AM 发表
哈,果然
谢了。。但现在有百多个errortype..
看来要用string,再用exec(string) 了。。 |
|
|
|
|
|
|
|
楼主 |
发表于 4-9-2006 01:54 PM
|
显示全部楼层
想说果然可以。解决了。谢谢。
- declare @strsql varchar(8000)
- declare @i int
- declare @errtotaltype int
- set @errtotaltype=43
- set @strsql= ' select errdate,'
- set @strsql=@strsql+ 'error1 = sum(Case when errtype = 1 then errcount else 0 End) '
- set @i=2;
- while @i <= @errtotaltype
- begin
- set @strsql= @strsql + ',error'+ convert(varchar,@i,2)+ ' = sum(Case when errtype = '+ convert(varchar,@i,2)+' then errcount else 0 End) '
- set @i=@i+1
- end
- set @strsql=@strsql+ ' from vwErrorfbeyd07 '
- set @strsql=@strsql+ ' group by errdate '
- set @strsql=@strsql+ ' order by errdate '
- exec(@strsql)
- go
复制代码
[ 本帖最后由 tensaix2j 于 23-11-2006 07:47 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 4-9-2006 09:50 PM
|
显示全部楼层
ID ConLine Amount
1 1 100
2 1 -100
3 2 200
4 2 -200
5 3 -300
6 3 300
请问要如何才能用query弄成
ID ConLine Amount
1 1 100
3 2 200
5 3 -300
谢谢 |
|
|
|
|
|
|
|
发表于 4-9-2006 11:28 PM
|
显示全部楼层
找出每个Conline的第一个record ?
select a.*
from tbTable a, (
select ConLine, Min(ID) as 'ID'
from tbTable
group by ConLine ) b
where a.ID = b.ID
order by 1
原帖由 DRAGONISM 于 4-9-2006 09:50 PM 发表
ID ConLine Amount
1 1 100
2 1 -100
3 2 200
4 2 -200
5 3 -300
6 3 300
请问要如何才能用quer ... |
|
|
|
|
|
|
|
发表于 5-9-2006 06:50 PM
|
显示全部楼层
俺也有问题请教 :
table_a
def col1 col2
--------------------------
0 a1 b1
0 a2 b2
1 a3 b3
2 a4 b4
0 a5 b5
效果:
def result
-----------------
0 a1
0 b1
0 a2
0 b2
1 a3
2 a4
0 a5
0 b5
凡是 ref = 0 就分开两个, 一个拿 col1, 第二个拿 col2
如果不要用store procedure该如何作?用纯SQL |
|
|
|
|
|
|
|
发表于 5-9-2006 09:34 PM
|
显示全部楼层
select def, col1 as 'result' from tbTable where def = 0 union all
select def, col2 as 'result' from tbTable where def = 0 union all
select def, col1 as 'result' from tbTable where def <> 0
原帖由 神仙祖宗 于 5-9-2006 06:50 PM 发表
俺也有问题请教 :
table_a
def col1 col2
--------------------------
0 a1 b1
0 a2 b2
1 a3 b3
2 a4 b4 ... |
|
|
|
|
|
|
|
发表于 5-9-2006 09:51 PM
|
显示全部楼层
SELECT def, col1 FROM table1
UNION
SELECT def, col2 FROM table1 WHERE def = 0 |
|
|
|
|
|
|
|
发表于 6-9-2006 11:12 AM
|
显示全部楼层
请教一个简单的问题...我还是初学者...
如果是要DISPLAY一个Employee的名字,还有一个MESSAGE是看薪金的..5K就DISPLAY LOW,10K~20K 就DISPLAY MEDIUM....
select Lname,salary from employee
where salary > 100000
然后就HANG在这里了.... |
|
|
|
|
|
|
|
发表于 6-9-2006 11:49 AM
|
显示全部楼层
select Lname,salary,
case
when salary < 5000 then 'low'
when salary >5000 and salary <10000 then 'medium'
when salary > 10000 then 'high'
end as Status
from employee
只要用case when 就可以了。 |
|
|
|
|
|
|
|
发表于 6-9-2006 12:03 PM
|
显示全部楼层
原帖由 thunderstorm 于 5-9-2006 09:34 PM 发表
select def, col1 as 'result' from tbTable where def = 0 union all
select def, col2 as 'result' from tbTable where def = 0 union all
select def, col1 as 'result' from tbTable where def <> ...
谢谢,呵呵。结果还是只有union吗?
但是他不能达到我要的排法 |
|
|
|
|
|
|
|
发表于 6-9-2006 12:33 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 6-9-2006 01:42 PM
|
显示全部楼层
原帖由 sawyih1 于 6-9-2006 11:49 AM 发表
select Lname,salary,
case
when salary < 5000 then 'low'
when salary >5000 and salary <10000 then 'medium'
when salary > 10000 then 'high'
end as Status
from employee
只要用 ...
感谢教导,可以了 |
|
|
|
|
|
|
|
发表于 18-9-2006 05:44 PM
|
显示全部楼层
再来一个问题,两个表:
DOTABLE :
DONO DODATE CARDCODE ITEMCODE QTY
D1 1/1/2006 C001 I001 5
D2 1/1/2006 C001 I002 10
D3 1/1/2006 C002 I001 8
D4 2/1/2006 C001 I002 8
RETURNTABLE
RTNO RTDATE CARDCODE ITEMCODE QTY
R1 5/1/2006 C001 I001 2
R2 6/1/2006 C001 I001 3
R3 7/1/2006 C001 I002 15
R4 8/1/2006 C001 I002 1
如何使用SQL得到这样:?
FIFO RESULT
DONO DODATE CARDCODE ITEMCODE DOQTY RTNO RTDATE RTQTY BALANCE
D1 1/1/2006 C001 I001 5 R1 5/1/2006 2 3
D1 1/1/2006 C001 I001 5 R2 6/1/2006 3 0
D2 1/1/2006 C001 I002 10 R3 7/1/2006 10 0
D4 2/1/2006 C001 I002 8 R3 7/1/2006 5 3
D3 1/1/2006 C002 I001 8 NULL NULL NULL 8 |
|
|
|
|
|
|
|
发表于 18-9-2006 06:42 PM
|
显示全部楼层
原帖由 神仙祖宗 于 18-9-2006 05:44 PM 发表
再来一个问题,两个表:
DOTABLE :
DONO DODATE CARDCODE ITEMCODE QTY
D1 1/1/2006 C001 I001 5
D2 1/1/2006 C001 I002 10
D3 1/1/2006 C002 I001 8
D4 2/1/2006 C001 I002 8
RETURNTABLE
RTNO RTDATE CARDCODE ITEMCODE QTY
R1 5/1/2006 C001 I001 2
R2 6/1/2006 C001 I001 3
R3 7/1/2006 C001 I002 15
R4 8/1/2006 C001 I002 1
FIFO RESULT
DONO DODATE CARDCODE ITEMCODE DOQTY RTNO RTDATE RTQTY BALANCE
D1 1/1/2006 C001 I001 5 R1 5/1/2006 2 3
D1 1/1/2006 C001 I001 5 R2 6/1/2006 3 0
D2 1/1/2006 C001 I002 10 R3 7/1/2006 10 0
D4 2/1/2006 C001 I002 8 R3 7/1/2006 5 3
D3 1/1/2006 C002 I001 8 NULL NULL NULL 8
请问你的10是从哪里来的?我看到的只是15 -.-!!
还有那5呢?因为我就欠这两个和balance
[ 本帖最后由 max5007 于 18-9-2006 06:59 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 18-9-2006 08:16 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 18-9-2006 09:33 PM
|
显示全部楼层
原帖由 神仙祖宗 于 18-9-2006 08:16 PM 发表
15已经被拆散成10+5了,那个10就是这样来的
怎么会被拆散?
那我的query就错了-.-!! |
|
|
|
|
|
|
| |
本周最热论坛帖子
|