求一个复杂的SQL语句

2025-06-26 23:25:27
推荐回答(4个)
回答1:

-- =============================================
-- Author:
-- Create date: <2010.11.4>
-- Description: <将传入的参数以字符分割,并返回表格形式的参数所分割出来的值>

--select * from f_split('1,2,3,4,5,6',',')
-- =============================================
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql)) --去掉字符中的空格
set @i=charindex(@StrSeprate,@SourceSql) --找分割符在字符中的位置
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>''
insert @temp values(@SourceSql)
return
end
GO
IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='test_4')
DROP TABLE test_4
GO

create table test_4
(
id varchar(20) not null,
value varchar(100) not null
)
insert into test_4 values('1008','A1|A2|A3')
insert into test_4 values('1009','B1|B2|B3|B4')

DECLARE @COUNT INT,@INDEX INT,@ID VARCHAR(20),@VALUE VARCHAR(100)

if object_id(N'[tempdb].dbo.[#TEMP_TEST_4_1]')>0
DROP TABLE #TEMP_TEST_4_1

if object_id(N'[tempdb].dbo.[#TEMP_TEST_4_2]')>0
DROP TABLE #TEMP_TEST_4_2

SELECT * INTO #TEMP_TEST_4_2 FROM test_4 WHERE 1=2

SELECT IDENTITY(INT,1,1) AS IDX ,* INTO #TEMP_TEST_4_1 FROM test_4
SELECT @COUNT=COUNT(*) FROM #TEMP_TEST_4_1

SET @INDEX=1
WHILE (@INDEX<=@COUNT)
BEGIN
SELECT @ID=ID,@VALUE=VALUE FROM #TEMP_TEST_4_1 WHERE IDX=@INDEX
INSERT INTO #TEMP_TEST_4_2 SELECT @ID,* FROM F_SPLIT(@VALUE,'|')
SET @INDEX=@INDEX+1
END

SELECT * FROM #TEMP_TEST_4_2

以上代码经过测试,完全能满足你的需求,请采纳,谢谢!

回答2:

SQL语句是无法搞定的。鉴定完闭。

存储过程中,使用类似
create or replace procedure substring_array(ID IN VARCHAR2,GE_TEXT IN VARCHAR2)
AS
BEGIN
For T In ( select GE from table (split(GE_TEXT,'|||')) ) Loop
INSERT INTO idea(MAN,GE) VALUES(ID,T.GE);
COMMIT;
End Loop;
END;

这只是一个做这个题目的思路。

回答3:

基本表,哪个人(NM)属于哪个部门(PT) 下面这种情况能不能用一条SQL语句SELECT 表2.PT, SUM(表1.P) / (SELECT COUNT(1) FROM 表2 AS b2

另外就是你要买正品港行手机可以百度或者淘宝搜索(正品港行数码)是一家专业销售香港行货手机的专营

回答4:

基本表,哪个人(NM)属于哪个部门(PT) 下面这种情况能不能用一条SQL语句SELECT 表2.PT, SUM(表1.P) / (SELECT COUNT(1) FROM 表2 AS b2