投稿

[SQL] COUNTするときに条件指定する方法

ExcelでいうCOUNTIF関数のようなことをSQLで行う SQLのCOUNT関数では条件指定ができないので代わりにSUMとCASEを使う 条件を指定してCOUNTする COL1がOKの件数を調べることができる <SQL> SELECT SUM(CASE WHEN COL1 = 'OK' THEN 1 ELSE 0 END) FROM HOGE GROUPIDごとの全件数と、そのグループに対してCOL1がOKの件数を調べることができる <SQL> SELECT GROUPID,COUNT(*),SUM(CASE WHEN COL1 = 'OK' THEN 1 ELSE 0 END) FROM HOGE GROUP BY GROUPID

[SQL Server] SQL Serverでの結合INSERT

SQL Serverで内部結合や外部結合した結果をINSERTする方法 SQL Serverで結合結果をINSERT <SQL> INSERT INTO T_インサート先テーブル(項目) SELECT 項目 FROM T_結合テーブル1 AS T1 LEFT JOIN T_結合テーブル2 AS T2 ON T1.ID = T2.ID WHERE T2.ID IS NULL

[Access SQL] Access SQLで切り捨てを行う方法

OracleではTRUNC関数を使用して切り捨てを行うが、Access SQLにはTRUNC関数はない 代わりにFIX関数を使用する Access SQLのFIX関数 引数の整数部分のみを返す関数 <SQL> 入力 SELECT 数値 , FIX(数値) FROM HOGE; 出力 数値 FIX(数値) 123 123 123.123 123 456.789 456 ○関連サイト 指定した小数桁で切り捨てる FIX関数

[Access VBA] SQLServerのテーブルをODBC接続でAccessにインポートする方法

AccessからSQLServerのテーブルを参照したいが、直接接続すると問題があるときには、一旦Accessにテーブルをインポートしてから参照する AccessにSQL Serverのテーブルをインポートする 前提として、SQL Serverに対するODBC接続が定義されていること <SQL> Function OdbcTableImport() As Integer On Error GoTo Err_Handler Dim DB_Connect_String As String OdbcTableImport = 0 DB_Connect_String = "ODBC;DSN=[ODBC接続名];UID=[ユーザID];PWD=[パスワード]" DoCmd.DeleteObject acTable, "[Accessテーブル名]" DoCmd.Hourglass True DoCmd.TransferDatabase acImport, "ODBC データベース", DB_Connect_String, acTable, "[SQLServerテーブル名]", "[Accessテーブル名]" DoCmd.Hourglass False OdbcTableImport = Nz(DCount("*", "[Accessテーブル名]"), 0) Exit Function Err_Handler: Select Case Err Case 3011 Resume Next Case Else Resume Next End Select Exit Function End Function ○処理の内容 8行目:Access内のインポートテーブルをあらかじめ削除しておく。削除しないと11行目のインポート処理でテーブルが上書き...