求一條SQL語句:(100分)

  • 主题发起人 主题发起人 L.Q
  • 开始时间 开始时间
L

L.Q

Unregistered / Unconfirmed
GUEST, unregistred user!
例如:
表:base_customer(樣表)
字段:id,cust_no,cust_name,addr,pho,fax,remark
我想寫一存儲過程:
CREATE PROCEDURE proc_customer @cust_no VARCHAR(30), @cust_name
VARCHAR,@addr VARCHAR
AS
SELECT
--如果@cust_no不為空,則查找cust_no字段的值
--如果@cust_name不為空,則查找cust_name字段的值
--如果@addr不為空,則查找addr字段的值
(當然,最起碼得有一個字段查找)
FROM base_customer
GROUP BY
--如果@cust_no不為空,則按cust_no字段分組合計
--如果@cust_name不為空,則按cust_name字段分組合計
--如果@addr不為空,則按addr字段分組合計
(當然,最起碼得有一個字段)
這條語句可以實現嗎?
請賜教
謝謝。。。。
 
如果是oracle用deocede()
如果是sql server用if then
就可以了
 
group by好像不支持case吧,我看分成三条语句不就OK了
 
CREATE PROCEDURE proc_customer @cust_no VARCHAR(30), @cust_name
VARCHAR,@addr VARCHAR
AS
begin
declare @Field varchar(1000)
if @cust_no is not null
select @Field='cust_no'

if @cust_name is not null
begin
if @Field is null
select @Field='cust_name'
else
select @Field=@Field+',cust_name'
end

if @addr is not null
begin
if @Field is null
select @Field='addr'
else
select @Field=@Field+',addr'
end

exec('select ' + @Field + '.... from base_customer group by ' + @Field)
end
 
一条SQL语句应该不行,除非用字符串先组合成一条SQL语句,然后用EXEC执行。
 
接受答案了
 
后退
顶部