アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQL SEREVER で選択した固定値との結合について質問です。

日付と紐付けたデータを1ヶ月分出力するSQLを作成しています。

紐付け対象となるデータに、1ヶ月毎日のデータが存在するわけではありません。

そこで、固定値として2010年7月であれば、
2010-07-01~2010-07-31 までの日付を全て固定値として取得
(対象データは行で取得したいのでUnionで繋いでいく)して、
その日付と紐づく対象データを外部結合しようと考えました。

SqlServerの場合、固定値のみを取得した場合
ダミーテーブルを使用するということができないようなので、
取得した固定値との紐付け時に下記???のところの指定がわかりません。

Select
'2010-07-01' 日付
Left Join
結合対象テーブル
On
結合対象テーブル.日付 = ???.日付

他のやり方で実現可能なのかもしれませんが、調べてもわかりませんでした
お解りになる方いらっしゃいましたら、教えていただければと思います。

A 回答 (2件)

以下で参考になりますか?



SELECT
a.日付,
b.*
FROM (
SELECT '2010/07/01' 日付 UNION ALL
SELECT '2010/07/02' UNION ALL
SELECT '2010/07/03' UNION ALL
SELECT '2010/07/04' UNION ALL
・・・
SELECT '2010/07/31') AS a
LEFT OUTER JOIN 結合対象テーブル AS b ON b.日付=a.日付

ちなみにSQL Server 2008では以下の書き方も可能です。
SELECT
a.日付,
b.*
FROM (
VALUES
('2010/07/01'),('2010/07/02'),('2010/07/03'),
('2010/07/04'),・・・,('2010/07/31')) AS a(日付)
LEFT OUTER JOIN 結合対象テーブル AS b ON b.日付=a.日付
    • good
    • 0
この回答へのお礼

教えていただいた方法で実現できました。

ありがとうございます☆

お礼日時:2010/08/02 16:29

>ダミーテーブルを使用するということができないよう



何を言いたいのかよく分かりませんが、1ヶ月分の日付の集合を生成といったことなら、SQL Server 2005以降なら、WITH式で再起呼出する方法でも作れると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

OracleではDualというテーブルを使用することができなので、同様のものがSqlServerにはないということでした

お礼日時:2010/08/02 16:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す