❶ sql 豎表變橫表,自適應的,誰能幫看看。
用sql本身難以實現。 你可以對生成的豎表(轉成csv格式 或 txt 格式)文件,再用pascal 或 c 語言編制轉換程序 進行後處理。
❷ 用VBA語言調用sql資料庫數據到excel中
VBE 工具 引用,選中 Microsoft ActiveX Data Object 2.8 Library
我不清楚是不是UFDATA_013_2008表的VENDOR列的數據,如果不是,你自己改一下SQL語句吧,sql = "select VENDOR from UFDATA_013_2008"
Sub SQL數據導入()
Dim cn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim str As String
Dim sql As String
Dim i As Integer
str = "Provider=SQLOLEDB;Data Source=SQLSERVER伺服器名或IP;DATABASE=資料庫;UID=用戶名;PWD=密碼"
cn.Open str
Set rs = New ADODB.Recordset
sql = "select VENDOR from UFDATA_013_2008"
rs.Open sql, cn, adOpenStatic, adLockOptimistic
If Not rs.EOF Then
For i = 1 To rs.RecordCount
Sheet2.Cells(i, 1).Value = rs.Fields(0).Value
Next i
rs.MoveNext
End If
rs.Close
cn.Close
End Sub
❸ SQL 查詢語句
一樓的寫法可以,但是不推薦用,因為那是老版本的寫法
select b.Name,a.sBill_TicketID,sum(a.fBill_OutMoney)
from a inner join b on a.sub_dh=b.sub_dh
group by b.Name,a.sBill_TicketID
如果還想看到明細可以這樣:
select b.Name,a.sBill_TicketID,sum(a.fBill_OutMoney) over (partition by b.Name,a.sBill_TicketID )
from a inner join b on a.sub_dh=b.sub_dh
❹ SQL server2000 中如何將,表「sub1」,將列名為「ID」中的「0402010B00」,按照列名為「記錄時間」查找
SQLSERVER支持TOP N,按照時間倒序排,取第一個
select top 1 * from sub1 where [id] = '0402010B00' order by 記錄時間 desc
❺ 怎麼在SQL中設置外鍵
sql server中建立外鍵約束有3中方式:enterprise manager中,tables,design table,設置table的properties,可以建立constraint, reference key;enterprise manager中,diagrams, new diagrams,建立兩個表的關系;直接用transact sql語句。
1、三個方法都需要先建立數據表。
1)創建表author :
create table [dbo].[author] (
[id] [bigint] not null ,
[authorname] [char] (10) null ,
[address] [char] (480) null ,
[introction] [ntext] null
)
2)創建表mybbs:
reate table [dbo].[mybbs] (
[id] [bigint] identity (1, 1) not null ,
[authorid] [bigint] not null ,
[title] [char] (40) null ,
[date_of_created] [datetime] null ,
[abstract] [char] (480) null ,
[content] [ntext] null
)
2、設置表mybbs中的authorid為外鍵,參照author表的id欄位,直接使用transact sql語句,過程如下:
1)增加表mybbs(authorid)的外鍵約束fk_mybbs_author,表mybbs中的authorid受表author中的主鍵id約束:
begin transaction
alter table dbo.mybbs add constraint fk_mybbs_author
foreign key (authorid)
references dbo.author([id]) on update cascade on delete cascade
2)刪除外鍵約束fk_mybbs_author:
--alter table dbo.mybbs drop constraint fk_mybbs_author
--rollback
commit transaction
上面on update cascade,on delete cascade兩個選項,指明以後author表的id欄位有delete,update操作時,mybbs表中的id也會被級聯刪除或更新。如果沒有選中,是不可以對author表中已被mybbs表關聯的id進行update或者delete操作的。
拓展資料:
SQL的主鍵和外鍵的作用:
1、插入非空值時,如果主鍵表中沒有這個值,則不能插入。
2、更新時,不能改為主鍵表中沒有的值。
3、刪除主鍵表記錄時,你可以在建外鍵時選定外鍵記錄一起級聯刪除還是拒絕刪除。
4、更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。
簡而言之,SQL的主鍵和外鍵就是起約束作用。
❻ 怎麼在excel中正確使用SQL的查詢語句
ALT+F11,打開VBE,插入一個模塊,把以下代碼復制進去:
Sub dosql(sql, a As Range)
Dim Conn As Object
Set Conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
PathStr = ThisWorkbook.FullName
Select Case Application.Version * 1
Case Is <= 11
strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & PathStr
Case Is >= 12
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
End Select
Conn.Open strConn
Set rst = Conn.Execute(sql)
If VBA.InStr(sql, "select") > 0 or VBA.InStr(sql, "Select") > 0 Then
With a.Parent
For i = 0 To rst.fields.Count - 1
.Cells(1, a.Column + i).EntireColumn.ClearContents
.Cells(1, a.Column + i) = rst.fields(i).Name
Next
End With
a.Offset(1).CopyFromRecordset rst
For i = 0 To rst.fields.Count - 1
a.Parent.Cells(1, a.Column + i).EntireColumn.AutoFit
Next
End If
Conn.Close
End Sub
Public Sub t()
'sql = "這里寫你的查詢語句"
dosql sql, [E1]
End Sub
1、記得運行代碼前要保存工作簿
2、查詢語句中,表名是[工作表名$]這樣的格式
3、dosql sql, [E1]中的E1,就是要放查詢結果的區域左上角那個單元格。
❼ 如何用SQL語句實現子分類中的不同項目自動添加數字編號
有個問題:你為什麼強調「同一個ID下」?
如果跟是不是在「同一個ID下」沒有半毛錢關系,你的問題可以簡化成:查出來的每條記錄裡面SUB_NAME是存在的,SUB_ID是空著的,現在要把相同的SUB_NAME賦予相同的SUB_ID。
如果我的理解是正確的話,那麼:
1、你另外建一張表,比如叫SUB_ID_NAME_COMP,然後一個欄位是SUB_ID,另一個是SUB_NAME,然後你在這張表裡面把對應關系整理好;
2、寫下面這個腳本搞起:
select'updateAseta.sub1_id='||
(selectx.sub_id
fromSUB_ID_NAME_COMPx
wherex.sub_name=a.sub1_name)||',a.sub2_id='||
(selectx.sub_id
fromSUB_ID_NAME_COMPx
wherex.sub_name=a.sub2_name)||'wherea.sub1_name='||
A.SUB1_NAME||'anda.sub2_name='||A.sub2_name||';'
fromA;
其它,如果跟「同一個ID」有關系的話,上面的腳本在寫的時候再把ID相關的信息帶進去做好控制。
❽ 多表聯合查詢SQL語句
我來講一下多表聯合查詢SQL語句:
A、B兩表
A表:idd name2 image2 tag2
1 長城 。 長城
2 故宮 。 故宮
3 天安門 。 天安門B表:id name image tag
1 愛情1 。 長城
2 天空 。 故宮
3 23愛 。 長城當tag2=tag,輸出
查詢結果:idd name2 image2 name image
1 長城 。 愛情1、23愛 。、。註:(A表記錄1條,B表相關記錄2條)以此展開循環
❾ VB如何連接SQL資料庫,模塊代碼怎麼改,如下:
.ConnectionString = "data source=MYSQL;initial catalog=SuperMarket;user id=sa;password=;database=SuperMarket;"
這句中的 password= 後要加上你的資料庫的sa的密碼。源程序中 sa 沒密碼是絕對不行的。
另外,你的資料庫名 是否叫 SuperMarket?若不是則改過來。
一般說來,你應該另外建立一個用戶,不要直接使用 sa 來訪問資料庫。
❿ access vba 一個sub多次使用sql
1)sql2 = "select last(成本單價) from RM_櫥櫃分廠材料成本2015 where 材料類別 = '" & Combo0.Value & "'"
data.Open sql1, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
這里也是sql1么?似乎應改為sql2吧
2)關了sql1重開sql2沒什麼不可以的,那是在釋放記錄集對象所佔用的內存,對於在低性能電腦上運行程序是很有好處的。
3)如果是多個記錄的記錄集,可以使用do……loop循環之類的方法移動指針而不必重開記錄集,但你上面這兩個記錄集都是匯總查詢單記錄的,用不到的。以do……loop循環為例:
with data
.movefirst
do until .eof
Text25 = .Fields(0)
.movenext
loop
end with