① 求一sql语句
例如表名为:procts_tj
SELECT A.TIME,A.NAME,B.procts
FROM (
SELECT MAX(time) AS TIME
,name AS NAME
FROM procts_tj
GROUP BY name )A
LEFT JOIN procts_tj B
ON A.TIME = B.TIME
AND A.NAME = B.NAME
WHERE 1 = 1
ORDER BY NAME DEC
基本上就是这样了,先找到最大日期,然后后面的再补充
② 求一条SQL语句
SELECT H.Pcd_Id,D.Pcd_Pro_Id,D.Pcd_Price,D.Pcd_GetIn_Num,H.Pch_Check_Date
FROM Proct_Check_Head H JOIN Proct_Check_Detail D ON H.Pcd_Id = D.Pcd_Id
JOIN(
SELECT D.Pcd_Pro_Id,MAX(M.Pch_Check_Date) AS Pch_Check_Date
FROM Proct_Check_Head H JOIN Proct_Check_Detail D ON H.Pcd_Id = D.Pcd_Id
GROUP BY D.Pcd_Pro_Id
) AS T ON D.Pcd_Pro_Id = T.Pcd_Pro_Id AND H.Pch_Check_Date = T.Pch_Check_Date
我也是做进销存系统的,QQ:316784428
SQL爱好者,技术相互交流!
③ 求一条SQL语句
这个是用动态SQL实现的
declare
v_sql varchar2(4000);
cursor c is select id from temp_006 order by id asc;
cursor d is select column_name from user_tab_cols where table_name like 'TEMP_006' order by column_id desc;
v_id varchar2(10);
v_col varchar2(50);
begin
v_sql:='select ';
open d;
fetch d into v_col;
v_sql:=v_sql||''''||v_col||''' as ';
fetch d into v_col;
v_sql:=v_sql||v_col;
close d;
open c;
loop
fetch c into v_id;
exit when c%notfound;
v_sql:=v_sql||',(select va from temp_006 where id ='||v_id||') as "'||v_id||'"';
end loop;
close c;
v_sql:=v_sql||' from al';
dbms_output.put_line(v_sql);
end;
执行这个块生成一句SQL,执行下就能得出你要的结果.
ps:有些过程看起来很简单,但是程序实现却特别复杂,这个是由于关系数据库的底层结构所决定的,所以我们要尽量扬长避短,如果有其他方式可以简单实现的话(如excel的行列转换)就别用这种复杂的方法.
④ 求一条SQL语句
是否能确保B表中的名字在A表中是唯一的
如果可以的话
updatebsetid=(selectidfromawherea.name=b.name)
⑤ 求一条SQL语句
套用上面回答者的甲骨文的sql语句:在ms-sql中 isnull()函数可以代替oracle的nvl()函数即可。改为ms-sql为:
select distinct t1.货品资料, isnull( t1.出库编号, t2.出库编号) as 出库编号,isnull(t1.入库编号,t2.入库编号) as 入库编号 from Table t1, Table t2 where t1.货品资料=t2.货品资料and isnull(t1.出库编号,t2.出库编号) is not null and isnull(t1.入库编号,t2.入库编号) is not null
⑥ 求一条sql语句
select a.processtype,a.日期,sum(a.数量) from
(select processtype,to_char(edite,'YYYYMMDD') 日期,count(1) 数量 from itf_zytb_exch group by processtype,to_char(edite,'YYYYMMDD')) a,
(select processtype,to_char(edite,'YYYYMMDD') 日期,count(1) 数量 from itf_zytb_exch group by processtype,to_char(edite,'YYYYMMDD')) b
where a.processtype=b.processtype
and a.日期>=b.日期
group by a.processtype,a.日期;
说明一下:把你上边写的查询当成两个查询,如果第二个查询的日期小于等于第一个查询,并且名字一样的话,就把之前的天数的值相加
还有一个,你最后要的结果好像少了一行
⑦ 求一条SQL语句
sql="select * from A表 where type_id="&Request.QueryString("id")
sql="select * from B表 where type_id="&Request.QueryString("id")
sql="select * from C表 where type_id="&Request.QueryString("id")
⑧ 求一条sql语句
select b.orders_id from orders as a , orderinf as b where a.orders_id=b.orders_id and a.status=1 group by b.orders_id having sum(sorting_state)=0
⑨ 求一条sql语句
语句如下:
insert into member(id,avatar2,avatar3,avatar4)
SELECT aa.memberid ,
MAX(CASE WHEN aa.num = 1 THEN aa.pic ELSE 0 END ) avatar2,
MAX(CASE WHEN aa.num = 2 THEN aa.pic ELSE 0 END ) avatar3,
MAX(CASE WHEN aa.num = 3 THEN aa.pic ELSE 0 END ) avatar4
FROM (select (@num := @num+1) as num, memberid,pic from moment,
(select @num := 0) as t1 where memberid = 100 limit 3) aa
GROUP BY aa.memberid;
执行效果如下: